在计算机内部是以二进制进行数据存储的,位运算就是直接对整数在内存中的二进制位进行操作。位运算包括按位与、按位或、按位异或、按位取反、左移、带符号右移、无符号右移。
一、按位与(&)
相同位的两个数字都为1则为1,否则为0
例:
0101
& 1100
= 0100
二、按位或(|)
相同位的两个数字有一个位1则为1,否则为0
例:
0101
| 1100
1101
三、按位异或(^)
相同位不同则为1,相同位相同为0
例:
0101
^ 1100
1001
四、按位取反(~)
把内存中的0和1全部取反
例:
A = 0101
~A = 1010
五、左移(<<)
a << b,就是把a转换成二进制后左移b位。
例:
100 << 2
100 == 1100100
<<2 == 110010000
== 400
因此100 << 2的值是400
六、右移(>>)
a >> b,就是把a转换成二进制后右移b位。相当于a除以2的b次方取整。
例:
100 >> 2
100 == 1100100
>>2 == 11001
==25
因此100 >> 2的值是25
注意:计算机存储是以二进制补码的形式,以上举例均是在无符号整数的形式下,因此直接转换成二进制即是其补码,而有符号整数在进行位运算时一定要先转换成补码再做运算!