引出问题为什么使用补码表示二进制:
因为方便计算。
理解补码:在十进制中9-3=6,因为3+7=10,对于加减运算 -3其实可以看做是7,也即9+7=16(高位移去即减10)=6。二进制也是如此理解。
在程序中所有的二进制都用补码来表示的话,就不会有+,-符号的处理。
验证一下:
1的原码、反码、补码:00000000000000000000000000000001
-1的原码:10000000000000000000000000000001
-1的反码(除符号位其余为取反):11111111111111111111111111111110
-1的的补码(反码+1):11111111111111111111111111111111
写如下方法
static void printBinaryInt(int i) {
for (int j = 31; j >= 0; j--)
if (((1 << j) & i) != 0)
System.out.print("1");
else
System.out.print("0");
}
调用printBinaryInt(1);//结果为 00000000000000000000000000000001
调用printBinaryInt(-1);//结果为 11111111111111111111111111111111
结果与分析的一样,以上。
时间: 2024-11-04 16:52:09