程序中所有数在计算机内存中都是以二进制的形式存储的。位运算就是直接对【整数】在内存中的二进制位进行操作。
二进制位运算中 0 表示false,1 表示true,空位都补 0。
与运算 &
数字按二进制转换后,相同位的两个数字都为 1,则为 1,若有一个不为 1,则为 0。即给相同位上的数字做逻辑与运算。
如:6&11=2
=> 0110
1011
0010
或运算 |
相同位上的数字做逻辑或运算。
异或运算 ^
相同位不同则为1,相同则为0。
取反运算 ~
二进制位取反。需注意有符号的取反。
左移运算 <<
a << b 表示把 a 转为二进制后左移 b 位(在后面添加 b 个 0),实际是 a*(2 的 b 次方)
符号右移运算 >>
a >> b 表示把 a 转为二进制后右移 b 位(去掉末 b 位),相当于 a/(2 的 b 次方) 取整
无符号右移运算 >>>