基本概念:
1.二进制最高位是符号位(0表示正数,1表示负数)
例:1的二进制
00000000 00000000 00000000 00000001
-1的二进制
10000000 00000000 00000000 00000001
2.正数的原码、反码、补码都一样
例:1的二进制
原码:00000000 00000000 00000000 00000001
反码:00000000 00000000 00000000 00000001
补码:00000000 00000000 00000000 00000001
3.负数的原码=原码的符号位不变,其他位取反(0->1,1->0)
例:-1的二进制
原码:10000000 00000000 00000000 00000001
反码:11111111 11111111 11111111 11111110
4.负数的补码=反码+1
例:-1的二进制
原码:10000000 00000000 00000000 00000001
反码:11111111 11111111 11111111 11111110
补码:11111111 11111111 11111111 11111111
5. 0的反码补码都是0
注意:计算机中的运算都是以补码的形式计算
异或运算
相同位不同则为1,相同则为0。
例:1^2
1的补码:00000000 00000000 00000000 00000001
2的补码:00000000 00000000 00000000 00000010
补码运算: 00000000 00000000 00000000 00000011 转换为10进制是3
非常感谢韩顺平老师的视频讲解
关于Java中& , | , ^ 的计算参考 http://blog.csdn.net/vebasan/article/details/6193916