题目:
判断一个 8 位二进制补码 10000000 转换成十进制是多少?
10000000
答案:
解析:
按照我们通常的学习逻辑:
最高位是符号位:1 代表负数。
1
取反加一:
符号位不变,数值位 0000000 取反得到 1111111。
0000000
1111111
再加 1,得到 10000000。
换算成十进制似乎是 -0?
但是! 在补码表示法中,为了不浪费 10000000 这个编码(因为已经有 00000000 表示 0 了),计算机规定:
00000000
8位补码 10000000 专门用来表示该位所能表示的最小负数,即 -2^7 = -128
🏛️ 计组必背:补码的范围
对于 n$位补码,其表示范围是:
对于 8 位补码:范围是 [-128, 127]。
特殊值:
01111111 是最大正数 127。
01111111
10000000 是最小负数 -128(没有对应的原码)。
11111111 是 -1(全 1 补码在计组里非常常见)。
11111111
10000000 → -128
原创不易,希望对你有帮助
“点赞”与“❤️”,考研稳上岸~