1、原码、反码、补码的存储形式(一般计算机中是采用补码的形式)
1)原码:左边最高位为符号位。
原码 +7 00000111 -7 10000111
2)反码:左边最高位为符号位,正数与原码相同,负数符号位为1,其它位为原码取反。
反码 +7 00000111 -7 11111000
3)补码:左边最高位为符号位,正数与原码、反码相同,负数符号位为1,其它位为原码取反然后加1,超过位数进位的左边最高位会被丢弃。
原码:+0 00000000 -0 10000000
反码:+0 00000000 -0 11111111
补码:+0 00000000 -0 11111111+1=100000000(进位1被丢弃)
2、JAVA中的位运算符
1)按位与
0 0 按位与:0;
0 1 按位与:0;
1 0 按位与:0;
1 1 按位与:1;
2)按位或
0 0 按位或:0;
0 1 按位或:1;
1 0 按位或:1;
1 1 按位或:1;
3)按位异或
0 0 按位异或:0;
0 1 按位异或:1;
1 0 按位异或:1;
1 1 按位异或:0;
4)按位取反
1 按位取反:0;
0 按位取反:1;
3、移位运算
1)<<为左移运算符
十进制 二进制 <<2
+17 00010001 01000100
-17 11101111 10111100
2)>>为带符号右移运算符
十进制 二进制 >>2
+17 00010001 00000100
-17 11101111 11111011
3)>>>为无符号右移运算符
十进制 二进制 >>>2
+17 00010001 00000100
-17 11101111 00111011