计算机在底层存储数据的时候,一律存储的是“二进制的补码形式”,采用该模式的原因是:补码形式效率最高
1.对一个整数来说,二进制原码、反码、补码是同一个,完全相同
int i = 1;
对应的二进制原码:
00000000 00000000 00000000 00000001
对应的二进制反码(符号位不变,其他位取反):
00000000 00000000 00000000 00000001
对应的二进制补码(反码+1):
00000000 00000000 00000000 00000001
2.对一个负数来说,二进制原码、反码、补码是什么关系呢?
byte i = -1;
对应的二进制原码:10000001
对应的二进制反码(符号位不变,其他位取反):11111110
对应的二进制补码(反码+1):11111111
例:分析byte b = (byte) 150,这个b是多少
int类型的4个字节的150的二进制码是什么?
00000000 00000000 00000000 10010110
将以上的int类型强制类型转换为1个字节的byte,最终在计算机中的二进制码是:10010110 ----->-106
10010110---->二进制补码形式
10010101---->二进制反码形式
11101010---->二进制原码形式
转载于动力节点老杜Java笔记