^
^符號是位邏輯運算符裏的按位異或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
&
與運算