位运算指的是二进制的运算,先将十进制数转成二进制的后在进行运算。在二进制
&位与:遇false则false,遇0则0,0代表false,1代表true
00000000 00000000 00000000 00000110 //6的二进制
& 00000000 00000000 00000000 00000010 //2的二进制
———————————————————————————
00000000 00000000 00000000 00000010 //结果:2
| 位或:遇true则true,遇1则1
^ 位异或:相同位false,不同为true
~ 取反:全部取反,0变1,1变0(也包括符号位)
00000000 00000000 00000000 00000110 //6的二进制补码
~11111111 11111111 11111111 11111001
— 1 //-1求反码
———————————————————————————
11111111 11111111 11111111 11111000 反码推原码
10000000 00000000 00000000 00000111 //-7
位移运算符
(<<)有符号左移运算,二进制向左移动左边符号位丢弃,右边补齐0
运算规律:向左移动几位,就是乘以2的几次幂
(0)00000000 00000000 00000000 00001100 //12的二进制
—————————————————————————————
(>>)有符号右移运算,二进制向右移动,使用符号位进行补位
运算规律:
00000000 00000000 00000000 00000011 //3的二进制
—————————————————————————————
(>>>)无符号右移运算符,无论符号是0还是1,都补0
10000000 00000000 00000000 00000110 //-6的二进制
符号位介绍
符号 计算方式
& 遇到0(flase)则0(false),两边同时为1(true),结果才是1(true)
| 遇到1(true)则1(true),两边都是0(false),结果才是0(false)
^ 相同为false,不同为true
~ 取反,二进制位全部取反,0变1,1变0,包括符号位
(<<) 有符号左移运算,左边符号位丢弃,右边补齐0
(>>) 有符号右移运算,根据符号位,补齐左边
(>>>) 无符号右移,无论符号位是0还是1,都补0
^ 运算符的特点:一个数被另一个数,异或两次,该数本身不变