0
点赞
收藏
分享

微信扫一扫

为什么byte的范围是-128~127?

半夜放水 2021-09-25 阅读 33
日记本

例如:-1 原码:1000 0001 反码:1111 1110 补码:1111 1111

例如:1 - 2
1的原码: 0000 0001
-2的原码: 1000 0010 反码: 1111 1101 补码: 1111 1110
1+(-2)的计算为:
    0000 0001
+   1111 1110
=   1111 1111
1111 1111 反码: 1000 0000 补码: 1000 0001 -> -1
所以1-2的结果为 -1

        byte a = 127;
        byte b = (byte) (a +1); // 需要进行类型转换
        System.out.println(b); // -128

为什么结果会是-128呢? 我们可以尝试用二进制计算下:
127 + 1 :
  0111 1111
+ 0000 0001
= 1000 0000 反码:1111 1111 补码:1 0000 0000 -> 256 (不过-0 这个二进制是不能求反码和补码的)

例如:十六进制的0x5 就是二进制的 0101

int类型的最大值在Integer包装类型中定义了个常量:0x7fffffff
十六进制表示为:
0111 1111 1111 1111 1111 1111 1111 1111
所以int类型的最大值为 2^31(2147483647)
最小值同理 -2^31-1(-2147483648)

举报

相关推荐

0 条评论