java語言支持的運算符:
相關概念的辨析
邏輯運算符:
位運算:
1.左移 <<
3<<2 == 3*2*2
3: 00000000 00000000 0000000 00000011
00|000000 00000000 0000000 0000001100
3<<2:000000 00000000 0000000 0000001100 ---- 12
2.右移 >> 有符號右移: 補全 補的是符號位
6>>2 -----6/2/2
6: 00000000 00000000 0000000 00000110
0000000000 00000000 0000000 000001|10
6>>2 :0000000000 00000000 0000000 000001 - 1
-6>>2
6: 00000000 00000000 0000000 00000110
取反:11111111 11111111 1111111 11111001
加1: 11111111 11111111 1111111 11111010 ---- -6
1111111111 11111111 1111111 111110|10
-6>>2: 1111111111 11111111 1111111 111110 ---一看就是一個負數:
減1: 1111111111 11111111 1111111 111101
取反: 0000000000 00000000 0000000 000010 ---2
加負號: -2
3.無符號右移 >>>
6>>>2
6: 00000000 00000000 0000000 00000110
0000000000 00000000 0000000 000001|10
6>>>2 :0000000000 00000000 0000000 000001 - 1
4.與操作:
6&2:
6:00000000 00000000 0000000 00000110
2:00000000 00000000 0000000 00000010
------------------------------------------
00000000 00000000 0000000 00000010 -----2
5.或操作:
6|2
6:00000000 00000000 0000000 00000110
2:00000000 00000000 0000000 00000010
------------------------------------------
00000000 00000000 0000000 00000110 ---6
6.異或:
6^2
6:00000000 00000000 0000000 00000110
2:00000000 00000000 0000000 00000010
------------------------------------------
00000000 00000000 0000000 00000100 ----4
7.反:
~6
6:00000000 00000000 0000000 00000110
~:11111111 11111111 1111111 11111001 ----一看這就是個負數:
-1: 11111111 11111111 1111111 11111000
取反:00000000 00000000 0000000 00000111---- 7
加負號: -7
byte : -128~127
-128
10000000 11111111
11111111 ----一看就是個負數:
減1: 11111110
取反: 00000001 ----1
加負號: -1
10000000 ----一看就是個負數:
減1: 01111111
取反: 10000000 --- 2^7 =128
加負號: -128