1. 为什么 8 位补码可表示 -128 但无法表示 +128?结合最高位位权说明?
请解释为什么 8 位补码可以表示 -128 却无法表示 +128,并结合最高位的位权说明原因?
- 补码最高位为负位权
- 补码表示范围推导
- 最高位为 1 时整体恒为负数
8 位补码的最高位(第 7 位)权值为 -2^7 = -128,其余 7 位权值为 2^0 到 2^6 的正数。当最高位为 1 且其余位全为 0 时,值 = -128 + 0 = -128,可表示。而 +128 需要第 7 位为 1(其无符号权值 128),但第 7 位在补码中就是符号位、权值为 -128,任何最高位为 1 的模式都表示负数;最高位为 0 时其余 7 位最大只能到 127,同样无法达到 +128。最高位为 1 时整体总是负数,所以 +128 无法表示。
补码把最高位当作负的位权,因此取值范围是 [-128, 127]。+128 需要符号位为 1 却又作为正数,二者矛盾,故不可表示。正数最大值是 01111111 = 127。