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,原码为反码符号位不变,其余位取反

 

posted @ 2019-04-12 22:23  野猿新一  阅读(45)  评论(0)    收藏  举报