首页 > 编程知识 正文

java的int范围,8位补码表示范围

时间:2023-05-05 12:35:17 阅读:154640 作者:1209

我知道java的int范围是-2147483648到2147483647,但不知道为什么

今天试着讨论了一下:

首先,我想起了计算机源代码的反码完成

正数原码反码补码相等;

另一方面,逆符号与原符号的比特相同,剩下的各位取反,候补符号等于逆符号加1

计算机中32位int类型变量的范围。 其中int类型是有符号整数。

正数在计算机中为原代码,最高位为符号位:

正整数1的源代码为0000000000000000000001

正整数的最大源代码是011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

所以最大的正整数是2147483647

负数在计算机中表示为补数,最高有效位为符号位。

-1:

源代码为10000000000000000000000000001,

反码为1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

补数为11111111111111111111111111111111111111111111111111

-2147483647 :

源代码为111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

代码为100000000000000000000000000000,

补数是10000000000000000000000000001

所以最小的负数是-2147483647吗? 不,不是。

在二进制中,0有两种表示方法。

的源代码为000000000000000000000000,

-0的源代码为10000000000000000000,

因为0只需要一个,所以把-0拿来当做一个最小的数-2147483648。

-2147483648的补数显示为10000000000000000,32位没有源代码。

请注意,此补数不是真正的补数。 真正的补数是1,000,0000,0000,0000,0000,0000,0000,0000,溢出。

因此,有符号32位int型整数是-2147483648~2147483647

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。