原码、反码、补码、移码
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