-2^n 的补码,实际上是使用 “-0” 的补码来表示,而在原码和反码中,实际上仍然表示了 “+0” 和 “-0” ,-2^n 的原码和反码和其他数字发生了冲突。
例如用8位表示-128的补码是1,0000000,如果它的原码和反码存在,反码为0,1111111原码为1,0000000,和“-0”冲突。所以8位二进制补码的表示范围是 -128 ~ 127,但原码和反码的表示范围为-127 ~ 127。
因为本课程中对反码的范围写的是 [-2^n, 2^n),所以有此疑问。
(抱歉之前一个问题 -2^n 误写为 2^-n,所以重开一个)