原码、反码、补码、移码

1. 原码、反码、补码、移码

原码:最高位为符号位(0表示正,1表示负),其余为为其真值的绝对值

如byte8的原码为 00001000,byte-8的原码为10001000

正数的反码、补码与其原码相同

反码:负数的反码为其原码的基础上除符号位外其余取反(1取反为0,0取反为1)

如-8的反码为11110111

补码:负数的补码为其反码的基础上末位+1

如11110111末位+1后为11111110

无论正负,其移码都为其补码的基础上符号位取反

2.java中的数据是以补码的形式运算

如题:

byte b=(byte)129;
System.out.println(b);
//控制台输出结果:    -127
//过程如下:
//129默认为int类型 原码为     00000000 00000000 00000000 10000001
//正数原码反码补码一样,所以取补码进行运算
//从低位开始截取8位得   10000001
//此时符号位为1,变为负数
//减1得              10000000
//取反码为           11111111即-127
posted @ 2021-10-02 11:16  热心邻居老王  阅读(551)  评论(0编辑  收藏  举报