位运算符

2020-05-26 16:06:48来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

位运算符

位运算符

位运算是对操作数以二进制比特(bit)位为单位进行的操作运算,位运算的操作数和结果都是整型数。几种位运算符和相应的运算规则如表所示。

运算符 用法 操作
>> op1>>op2 将op1右移op2个位(带符号)
<< op1<<op2 将op1左移op2个位(带符号)
>>> op1>>>op2 将op1右移op2个位(不带符号的右移)
& op1&op2 op1和op2都是true,结果才为true
op1⊙op2 op1和op2有一个是true,则结果为true
^ op1^op2 op1和op2是不同值

注:⊙是 | 。因为markdown格式的原因,打上去显示不了。。。
【注意】对于&和|运算符,参与运算的两个运算量可以是逻辑值,也可以是数值数据。对于数值数据,将对两运算量按位对应计算,这时,1相当于true,0相当于false。这个位运算符没有前面逻辑符的附加特点。

移位运算符
移位运算是将某一变量所包含的各比特位按指定方向移动指定的位数。通过对第一个运算对象左移或右移右边的操作数的位数来对数据执行位操作。
移位运算符的例子:

x(十进制表示) x的二进制补码表示 x<<2 x>>2 x>>>2
30 00011110 0111100 00000111 00000111
-17 11101111 10111100 11111011 00111011

补码最高位是符号位,0表示正数,1表示负数。所以在>>这个带符号右移的运算中,右移后左边留的空位又符号位数字补齐。而不带符号的右移中,右移后左边的空位一律填0。带符号的左移在后面补0。

按位逻辑运算
位运算符&,|,~,^分别提供了基于位的与,或,求反,异或操作。其中,异或是指两位值不同时,对应结果位为1,否则为0。
例:x=13,y=43
先将数据转换为二进制:x=00001101,y=00101011。
x=11110010,就是把00001101按位求反,得到11110010。然后这个形式是负数的补码形式,负数的补码是由正数的补码(原码)按位求反再加1,所以我们先对11110010求反,得到00001101,再减去1,得到00001100=14。所以x=14。
x&y=1001,即9。
image


原文链接:https://www.cnblogs.com/HIIM/p/12968898.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Java生鲜电商平台-生鲜电商中采购订单与库存解决方案(小程序/APP

下一篇:第六章第三十七题(格式化整数)(Format an integer) - 编程练习