^
^符号是位逻辑运算符里的按位异或zd,只有在两个比较版的位不同时结果权是1,否则为0
例 9^2=11
9 二进制:1 0 0 1
2 二进制:0 0 1 0
9^2 结果: 1 0 1 1 转换为十进制:8+2+1=11
例 11^2=9
11 二进制:1 0 1 1
2 二进制:0 0 1 0
9^2 结果: 1 0 0 1 转换为十进制:8+1=9
<<
左移运算符
n << 1 相当于 n * 2
n << 2 相当于 n * 2 * 2
for(int i = 1;i< 32; i++){
System.out.println("i = " + i + " " + (2 << i));
}
输出
i = 1 4
i = 2 8
i = 3 16
i = 4 32
i = 5 64
i = 6 128
i = 7 256
i = 8 512
i = 9 1024
i = 10 2048
i = 11 4096
i = 12 8192
i = 13 16384
i = 14 32768
i = 15 65536
i = 16 131072
i = 17 262144
i = 18 524288
i = 19 1048576
i = 20 2097152
i = 21 4194304
i = 22 8388608
i = 23 16777216
i = 24 33554432
i = 25 67108864
i = 26 134217728
i = 27 268435456
i = 28 536870912
i = 29 1073741824
i = 30 -2147483648
i = 31 0
i = 32 2
>>
右移运算符
n >> 1 相当于 n / 2
n >> 1 相当于 n / 2 / 2
其中
2 >> 1 等于 1
2 >> 2 等于 0
>>>
无符号右移,忽略符号位,高位都以0补齐,无符号右移运算符>>> 只是对32位和64位的值有意义
1 >>> 1 为 0001 → 0000 等于0
2 >>> 1 为 0010 → 0001 等于1
2 >>> 2 为 0010 → 0000 等于0
&
与运算