我记得第一次听说位运算符好像是从大二的微机原理,那个时候学并不好,后来编程好像也没有用到过,但是最近在复习一些东西的时候,发现这才是最终要的基础,比起算术运算符高端大气上档次多了。
下面就对今天复习的位运算符做一下笔记
&:按位与。
|:按位或。
~:按位非。
^:按位异或。
<<:左位移运算符。
>>:右位移运算符。
>>>:无符号右移运算符。
关于前面几个,请看下面的真值表
主要记录一下后面三个吧
1.左位移
向左移一位,空出的就是低位,高位溢出,空位补0,相当于乘以2.例如:
二进制码依次左移1位。0000 0001→0000 0010→0000 0100→0000 1000.对应的分别是1,2,4,8
2.右位移
这个时候要分有符号还是无符号
(1)如果是无符号
空出高位全补0 低位溢出 . 相当于每次除以2,例如
二进制码10100110无符号右移,则右边两位溢出,左边两位补0
1010 0110→0010 1001
(2)如果有符号
又分两种情况
1.逻辑右移
低位溢出,高位补0(和无符号右移是一样的)
2.算术右移
低位溢出,高位补符号位。
例如 1011 1010右移三位10111010>>3
结果变成1111 0111