二进制补码计算器
将有符号十进制数或二进制位模式转换为 4、8、16 或 32 位补码表示。
计算二进制补码
输入有符号十进制整数,或以 0b 开头的二进制数。
示例:-5 或 0b11111011
关于二进制补码
补码是现代计算机表示有符号整数的标准方式。它采用固定的位数,并赋予最高位负的位权。因此,8 位模式可表示 -128 到 127;同样的八个位也可解释为 0 到 255 的无符号数,所以交换或显示二进制数据时,解释方式至关重要。
正数与普通二进制数相同,只需在前面补零。手动构造负数时,先将其正的绝对值写成指定位宽的二进制数,再逐位取反并加一。例如,十进制 5 的八位表示为 00000101,取反得到 11111010,加一得到 11111011,即 -5 的八位表示。本计算器通过对 2 的位宽次方取模得到相同结果。
位宽是数值表示的一部分。负五在四位下为 1011,八位下为 11111011,十六位下为 1111111111111011。扩展有符号负数时,重复最高位的一,这称为符号扩展;扩展正数时则重复最高位的零。如果截去的位有效,删减位数会改变数值,因此本计算器拒绝超出所选有符号范围的十进制数。
解读位模式时,先看最高位。如果为零,有符号和无符号解释相同;如果为一,从无符号值中减去 2 的位宽次方。因此,11111011 的无符号值为 251,而 251 - 256 得到有符号值 -5。此规则通常比逆向执行取反加一更快捷。
补码具有实用的算术性质。有符号与无符号数的加减法可使用同一二进制加法器,溢出则按上下文处理。补码与反码不同,零只有一种表示。其范围不对称,多出一个负数,因为零占用了一个非负位模式。
本计算器适用于计算机体系结构、数字逻辑、嵌入式编程、网络协议、调试和离散数学。所选位宽应与研究的系统或数据类型一致。缺少位宽及符号属性的位模式信息不完整,换一种约定解释可能得到完全不同的十进制结果。
补码示例
| 十进制数与位宽 | 二进制位模式 | 说明 |
|---|---|---|
| -5,8 位 | 11111011 | 对 00000101 取反后加一。 |
| -8,4 位 | 1000 | 这是四位有符号整数的最小值。 |
| 42,8 位 | 00101010 | 正数使用前导零补齐的普通二进制表示。 |
如何使用补码计算器
- 输入有符号十进制整数或带 0b 前缀的二进制位模式。
- 选择目标系统使用的位宽。
- 选择“计算补码”。
- 比较二进制、有符号十进制和无符号十进制表示。
补码常见问题
为什么位宽很重要?
位宽决定模数及有符号数范围。同一数字需要不同数量的填充位,在较小位宽下可能无法表示。
八位能表示什么范围?
八位补码整数范围为 -128 到 127,对应位模式的无符号范围为 0 到 255。
如何对二进制数取负?
在固定位宽内,逐位取反后加一。除最小可表示整数这一特殊情况外,再执行一次该过程会返回原值。
为什么有符号和无符号结果不同?
两者赋予最高位不同的位权。存储的位完全相同,但解释方式不同。
补码中有负零吗?
没有。零只有全零这一种表示,这是补码相对于原码和反码的重要优势。