我想知道为什么java int类型(32位签名)在范围内有有效值-2,147,483,648到2,147,483,647,而不是(-2,147,483,648到2,147,483,648)?
发布于 2020-02-21 14:59:02
在现代计算机中,数字的主要表示是某种形式的二进制表示。它由一个固定数目的位组成,其值为0或1。在Java中,int被指定使用32位的二进制表示。
32位二进制表示可以具有2^32状态。(这是一个数学事实。它可以从基本原则中得到证明。)
考虑从-2^31到+2^31的数学整数:
在1到2^31 (inclusive)
因此,把-2^31到+2^31之间的数字进行计算,我们得到了2^31 + 2^31 +1的值。即2^32 +1,这比在2^32状态下表示的值要多。
你的建议在数学上是不可能的。
https://stackoverflow.com/questions/60341055
复制相似问题