反码(one's complement,一的补码)也用最高位表示符号:正数的反码等于原码;负数的反码是把原码的数值位按位取反、符号位保持 1。下面重点说明函数与示例。
用 PHP 处理 反码
下面是 PHP 中处理反码的常用写法:
$n = -42;
echo sprintf("%08b", $n & 0xFF); // 11010110运行前确认输入的字符集(推荐 UTF-8),结果可以用本站工具交叉核对。
示例
输入:7
反码结果:8 位反码 00000111
说明:正数反码等于原码;负数反码是原码的数值位按位取反、符号位保持 1。
核心要点
- 正数:反码 = 原码
- 负数:符号位 1,数值位按位取反
- 8 位反码范围同样是 -127~+127,也有 +0 和 -0(-0 为 11111111)
- 反码加法要用循环进位(最高位进位加回最低位)
- 现代计算机几乎不用反码做运算,只用它作为“到补码的中间步骤”
Python 示例
下面是 Python 中处理反码的常用写法:
n = -42
print(format(n & 0xFF, "08b")) # 8 位补码 11010110
print(int("11010110", 2) - 256) # 回到 -42(最高位为 1 时减 256)运行前确认输入的字符集(推荐 UTF-8),结果可以用本站工具交叉核对。
本站的进制转换工具可以直接处理,计算在浏览器本地完成,适合快速核对结果。
常见问题
【~1 在 Python 里为什么是 -2?】Python 按补码、任意精度取反,~x 等于 -x-1,不是固定 8 位的反码。
【反码有 -128 吗?】8 位没有,范围仍是 -127~127。
【为什么要先求反码再加 1?】这就是补码的定义,加 1 之后加法电路不必处理循环进位和 -0。
文中示例可以在本站对应工具中验证;处理密钥、证书等敏感数据时,请注意保护隐私。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。