c语言中位运算的左位移右位移都是什么意思

假设0010左移就是把二进制数向左移动,右边补0,0的二进制全是0,左移之后右边再补0。0010<<2 就是1000 实际是做的*4。1000>>2 计算 0010 实际做的是/4。
位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算。位移位运算符分为左移和右移两种,均为双目运算符。第一运算对象是移位对象,第二个运算对象是所移的二进制位数。位移位运算符的运算对象、运算规则与结果、结合性如表2-16所示。移位时,移出的位数全部丢弃,移出的空位补入的数与左移还是右移花接木有关。如果是左移,则规定补入的数全部是0;如果是右移,还与被移位的数据是否带符号有关。若是不带符号数,则补入的数全部为0;若是带符号数,则补入的数全部等于原数的最左端位上的原数(即原符号位)。具体移位规则如下所示。位移位运算符的优先级如下:・算术运算符 优先于 位移位运算符 优先于 关系运算符・位移位运算符是同级别的,结合性是自左向右例如,设无符号短整型变量a为0111(对应二进制数为0000000001001001),则:a<<3 结果为01110(对应二进制数为0000001001001000),a不变a>>4 结果为04 (对应二进制数为0000000000000100),a不变又如,设短整型变量a为-4(对应二进制数为1111111111111100),则:a<<3 结果为-32(对应二进制数为1111111111100000),a不变a>>4 结果为-1(对应二进制数为1111111111111111),a不变
呵呵假设0010左移就是把二进制数向左移动,右边补0,0的二进制全是0,左移之后右边再补00010<<2就是1000实际是做的*41000>>2计算0010做的的/4
文章标签:

本文链接:https://www.u1e.cn/baike/a/919259a50db79e0e242454c6 [复制]

猜你喜欢

歇后语大全

还没有人回应过