补码(two's complement,二的补码)是现代计算机表示有符号整数的标准方式。下面重点说明显示与排版。
补码怎样格式化输出
存储结果是 w 位模式;算术按模 2^w 进行。打印十进制时按有符号规则还原。
位宽、有无符号、端序(大端/小端)、输出进制。
示例
输入:42
补码结果:8 位补码 00101010(十进制校验:42)
说明:正数补码等于原码;负数补码等于反码加 1,8 位补码可表示 -128。
规则说明
- 位宽 w 的补码范围是 -2^{w-1}~2^{w-1}-1
- 溢出不会自动报错,需要语言或检测标志来发现
- 右移分逻辑右移和算术右移(算术右移补符号位)
- 比较有符号数时不能直接当无符号数比大小
Python 示例
下面是 Python 中处理补码的常用写法:
n = -42
print(format(n & 0xFF, "08b")) # 8 位补码 11010110
print(int("11010110", 2) - 256) # 回到 -42(最高位为 1 时减 256)运行前确认输入的字符集(推荐 UTF-8),结果可以用本站工具交叉核对。
本站的进制转换工具可以直接处理,计算在浏览器本地完成,适合快速核对结果。
常见问题
【-1 的 8 位补码是什么?】11111111。这是最常见的记忆点:全 1 就是 -1。
【8 位补码能表示 -128 吗?】能,编码是 10000000。它没有对应的正数 +128。
【为什么 11111111 是 -1 不是 -127?】按补码还原:取反得 00000000,加 1 得 1,再加负号为 -1。读成原码才会得到 -127。
文中示例可以在本站对应工具中验证;处理密钥、证书等敏感数据时,请注意保护隐私。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。