32 位的最大整数表示

时间:2021-04-29 11:31:20

标签: computation

我有一个关于计算机和数字表示的非常基本的问题。我想知道为什么 2^31 -1 是 32 位二进制的最大正整数表示,而 2^31 是最大的负值?为什么不能将正负表示都表示为 2^32?这是否与以下事实有关,例如,给定一个正数表示,您还希望保留表示负数的能力?我假设我们希望保持在 32 位中使用所有可能的 0 和 1 组合的可能性。

1 个答案:

答案 0 :(得分:0)

我认为很明显,对于 32 位,您只能有 2^32 个不同的值。对于 unsigned 整数,这些值的选择非常简单:0、1、2 等等,直到你有 2^32 个值 - 所以最后一个可能的值是 2^32-1。

对于浮点数,不同的值要复杂得多,但同样,您不能拥有比位模式更多的值,因为一个位模式必须有一个值。 (不是相反,因为 -0.0 = +0.0)。

有符号整数几乎没有那么复杂——你仍然有 2^32 位模式,还有 2^32 个不同的值。所有值都相差 1,因此最小值和最大值之间的差值必须为 2^32-1。

出于显而易见的原因,范围选择以 0 为中心,因此您大约有 2^32/2 = 2^31 个值低于 0 和 2^31 个值高于 0。它只是“大致”2^31 ,因为您还需要 0 的位模式,或 +0 和 -0 的两个位模式。这就是为什么 2^31-1 中有 -1。

2 的补码选择缩小正数的范围,因为它编码的正有符号整数与具有相同值的无符号整数相同。这使得最高位代表 -2^31。

相关问题