计算机在存储数值类型数据时是以补码的形式存储的,读取显示时将补码转为原码输出
针对于二进制, 第一位为符号位:1表示负数 0表示整数
- 正数的原码、反码、补码都一样。
- 负数的反码:原码除了符号位不变之外其余取反 ;负数的补码=反码+1。
- 补码转原码:补码-1然后除了符号位以外其余取反。
public class _原码反码补码 {
public static void main(String[] args) {
//正数的原码、反码、补码都一样
int i=129;// 0000 0000 0000 0000 0000 0000 1000 0001
int i1=-129;// 1000 0000 0000 0000 0000 0000 1000 0001
byte b2=5;//原码:0000 0101 反码:0000 0101 补码:0000 0101
byte b3=-5;//原码1000 0101 反码:1111 1010 补码:1111 1011
byte b4=(byte) 129;// 补码:1000 0001 反码:1000 0000 原码:1111 1111
System.out.println(b4);//-127
System.out.println(0b01111111);//127
System.out.println((byte)0b11111111);//-1 1111 1111为补码,会将补码转为原码再显示
}
}