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

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

假设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不变

左移一位相当于乘2,右移一位相当于除2,异拿首或一次相当于加密,再异或一次(用原来的数)就得到了原先的数,相当于解密。

按位或

可把指定的位设为1

按位异或

可把指定的位变反

按位与

可把指定的位饥拿清0

按位左移

按位右移

乘除运算

按消肢数位左移、按位右移

可以代替2的乘除法

按位的左移和右移要看是否越界的问题一般用于整数的处理


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12350427.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存