/*
注:以下出现的abc都按16位计算二进制
& 与
对应位都为1才为1,否则为0
例:
a =00000000 10001101 =141
b =00000000 00111000 =56
a&b =00000000 00001000 =8
| 或
对应位都为0才为0,否则位1
例:
a =00000000 10001101 =141
b =00000000 00111000 =56
a|b =00000000 10111101 =189
^ 异或
例:
a =00000000 10001101 =141
b =00000000 00111000 =56
a^b =00000000 10110101 =181 对应位相同为0,否则为1
~ 取反
1改为0,0改为1
例:
a =00000000 10001101 =141
~a =11111111 01110010 =-142
<< 左移
向左移n位,右边移空的位补0,左边移出的部分舍弃
例:
a =00000000 10001101 =141
a<<1 =0(舍弃) 00000001 00011010(补0) =282
注:在总位数足够储存左移后的值时,num<<n 相当于 num*n的2次方 。位数不足时,会使这个数变小(高位会舍弃)。
>> 右移
向右移动n位,正数左边空位补0,负数左边补1。右边移出的位舍弃
例1:
a =00000000 10001101 =141
a>>1 =0(补0) 0000000 01000110 1(舍弃) =70
例2:
c =11111111 11100111 =-25
c>>1 =1(补1) 11111111 1110011 1(舍弃) =-13
注:num>>n 相当于 num/n的2次方
>>> 无符号右移
无符号右移不论是正数还是负数都在左边移空的位补0,右边移出的位舍弃
正数:
a>>>1 =0(补0) 0000000 01000110 1(舍弃)=70
负数:
c>>>1 =0(补0) 11111111 11110011 1(舍弃) =2147483635
无符号右移(>>>)对正数相当于右移(>>),但是针对负数时 与右移(>>) 的区别是:由于在左边补了0,所以会把负数变为正数。
*/
【?】位运算符
最新推荐文章于 2024-05-07 09:52:50 发布