位运算符:&、|、^、~、<<、>>
用途:直接操作二进制,省内存,效率高
注意:只能用于整型类操作数(char,short,int,long)
运算规则:
1) & 按位与 同1得1,否则为0:只有对应的两个二进制位均为1时,结果才为1,否则为0
例如:6&3=2
0110
& 0011
---------------------
0010
2) | 按位或 有1就1:只要对应的二进制位有1,结果位就为1,否则为0
例如:6 | 3=7
0110
| 0011
---------------------
0111
3)^按位异或 不同为1:当对应的二进制位相异,结果位为1,否则为0
例如:6^3=5
0110
^ 0011
---------------------
0101
4)~ 取反 各二进制位进行取反(0变1,1变0)【符号位也要进行取反运算,要考虑从补码返回原码】
例如:~9=-10
0 1001
~
--------------------
1 0110 (有符号位,所以是补码,要把补码转换成原码。规则:先保持符号位不变,数据位取反,末尾加1)
1 1010
5)<< 左移 各二进制位全部左移n位,高位丢弃,地位补0
1000 1000 0101 0000
100 0100 0010 1000 0000
------ -----
砍掉 补0
左移三位
<---------------------
x<<n :x的所有二进制位向左移动n位,移出位删掉,移进的位补0
左移操作<<: 左移n位相当于 *2^n(乘以二的n次方)
6) >> 右移 各二进制位全部右移n位,保持符号位不变
1000 0100 0111 1101
1111 0000 1000 1111 101
----- -----
补符号位 砍掉
右移三位
-------------------->
x>>n : x的所有二进制位向右移动n位,移出位删掉,移进的位补符号位
右移操作>>: 右移n位相当于 /2^n(除以二的n次方)
用途:快速计算一个数除以2的n次方,(8>>3 等同于8/2^3)