Java基础知识回顾-day1
位运算符:
1. 按位与(&):当两位同时为1时才返回1。
例如:5 & 9 = 1
0101 & 1001 = 0001 =1
2. 按位或(|):只要有一位为1即可返回1。
例如:5 | 9 = 13
0101 & 1001 = 1101 =13
3. 按位非(~):单目运算符,将操作数的每个位(包括符号位)全部取反。
例如:~5 = -6
~0 0101 = 1 1010 = -6(符号位变化)
4. 异或(^):当两位相同时返回0,不同时返回1。
例如:5 ^ 9 = 12
0101 ^ 1001 = 1100 =12
5. 左移(<<):
例如:5 << 2 = 20
0101 << 2 = 10100 =20
6. 右移(>>):
例如:5 >> 2 = 1
0101 >> 2 = 0001 =1
7. 无符号右移(>>>):
例如:5 >>> 2 = 1
0101 >>> 2 = 0001=1
注:当操作数为负数时,我们需要将其补码连带符号位向右移动高位补0,如-5在Java中保存为:11111111 11111111 11111111 11111011,-5 >>> 2 无符号右移结果为:00111111 11111111 11111111 11111110,将结果转换为10进制得出:1073741822。
小结:Java中所有数值都以补码的形式保存,负数的补码转原码需要按位取反,末尾加1。位运算符的运算规则是:参与运算的数字,低位对齐,高位不足的补零。