java整型的原码反码与补码表示
java中byte、short、int、long都是以二进制补码表示的整数
原码
最高位为符号位,0表示正数,1表示负数,其余位为正常的二进制表示
5的原码:00000000 00000000 00000000 00000101
-5的原码:10000000 00000000 00000000 00000101
反码
正数:与原码一样
负数:符号位不变还是为1,其余位取反
5的反码:00000000 00000000 00000000 00000101
-5的反码:11111111 11111111 11111111 11111010
补码
正数:与原码一样
负数:补码加1
5的补码:00000000 00000000 00000000 00000101
-5的补码:11111111 11111111 11111111 11111011
验证
验证整数是以二进制补码的表示的
public class Test5 {
public static void main(String[] args) {
System.out.println("5的补码:" + Integer.toBinaryString(5));
System.out.println("-5的补码:" + Integer.toBinaryString(-5));
}
}
结果为如下所示
5的补码:101 // 高位29个零省略
-5的补码:11111111111111111111111111111011
总结
- java中整数都是以二进制补码表示
- 最高位符号位,0表整数,1表负数
- 正数:原码、反码、补码都一样
- 负数:反码为原码的符号位不变,其余位取反;补码为反码加1
- 负数:可以反推出反码为补码减1,原码为反码符号位不变,其余位取反

浙公网安备 33010602011771号