java运算符
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