Table of Content
位运算符可以直接对二进制数位进行操作
& (按位与)
- 两个对应位都为1则得1,有0则得0按位与可以把某个二进制数位置0任何数位和0按位与结果为0,和1按位与结果不变
3 & 5: 3 0000 0011 5 0000 0101 0000 0001
| (按位或)
- 两个对应位都为0则得0,有1则得1按位或可以把某个二进制数位置1任何数位和0按位或结果不变,和1按位或结果为1
3 | 5: 3 0000 0011 5 0000 0101 0000 0111
\^(按位异或)
- 两个对应位相同则得0,不同则得1按位异或可以把某个二进制数位求反任何数位和0按位异或结果不变,和1按位异或,1变为0、0变为1
3 ^ 5: 3 0000 0011 5 0000 0101 0000 0110
<<(左移位运算符)、>> (右移位运算符)
- 可以把一个数据中的所有二进制为向左或向右移动n个位置,但不会改变参与计算的数字,格式为
num << n
或num >> n
- 左移操作后,右边的空位置上一定补0
3 << 5 3 0000 0011 0110 0000
- 右移操作后,有符号数据左边空位置补符号位,无符号数据左边空位置补0
-48 >> 2 -48 1101 0000 1111 0100
-
如果移位操作过程中没有丢失有效数字
-
左移n位相当于乘以2的n次方
-
右移n位相当于除以2的n次方
-