免费补码计算器

输入十进制或二进制值查看补码

理解补码表示

在处理二进制数时,许多数字系统和软件都需要处理负值。补码方法是计算机中表示有符号整数的标准方法。这个免费的在线补码计算器(也称为有符号二进制计算器或补码转换器)简化了十进制数与其有符号二进制表示之间的转换,包括计算任意值的二进制补码。无论您需要将负数二进制数转换为其十进制等效值,还是反之,该工具都能立即提供结果。

与仅支持非负整数的无符号表示法不同,补码系统使用最高有效位(MSB)作为符号指示符:前导0表示正数,前导1表示负数。这使得固定位数可以同时表示正数和负数。例如,使用8位,范围从−128-128到127127。“补码”这个名称源于这样一个数学性质:一个数的负数等于2n2^{n}减去该数,其中nn是位数。

如何使用计算器

使用该工具非常直接:

  1. 选择位数用于表示(例如8、16、32)。更大的位数可以容纳更宽的值范围。
  2. 输入一个十进制整数,在允许范围内。计算器立即显示其补码二进制表示。
  3. 要执行反向转换,输入补码形式的二进制数;计算器输出对应的十进制值。

该工具内部处理所有位级操作,节省时间并消除手动错误。

手动转换:正数到负数

如果您更喜欢手动找到一个正二进制数的补码,请遵循两个简单步骤:

  1. 翻转所有位 – 将每个0变为1,每个1变为0。这得到反码。
  2. 加 1 到结果中,丢弃超出所选位宽的任何溢出。

例如,考虑十进制值2222。在8位二进制中,2222是0001 0110。其补码(表示−22-22)的计算如下:

  • 反码:1110 1001
  • 加 1:1110 1010

因此,1110 1010是−22-22的8位补码表示。

手动转换:补码转回十进制

有两种可靠的方法来解码有符号二进制数。

方法1 – 带符号MSB的加权求值:
将最高有效位视为具有负权重。对于8位数1100 1001:

Decimal=(−1×27)+(1×26)+(0×25)+(0×24)+(1×23)+(0×22)+(0×21)+(1×20)=−128+64+0+0+8+0+0+1=−55.\begin{aligned} \text{Decimal} &= (-1 \times 2^{7}) + (1 \times 2^{6}) + (0 \times 2^{5}) + (0 \times 2^{4}) + (1 \times 2^{3}) + (0 \times 2^{2}) + (0 \times 2^{1}) + (1 \times 2^{0}) \\ &= -128 + 64 + 0 + 0 + 8 + 0 + 0 + 1 = -55. \end{aligned}

方法2 – 取补然后取负:
如果数字为负(MSB=1),计算其补码以获得绝对值。对于1100 1001,其补码是0011 0111,等于十进制5555。添加负号得到−55-55。

补码在算术中的应用

补码的最大优势之一是加法和减法在二进制层面上变得相同。例如,计算22−522 - 5(即22+(−5)22 + (-5)),将补码表示相加:

  • 2222 的8位:0001 0110
  • −5-5 的8位(通过取反0000 0101并加1得到1111 1011)

相加:

  0001 0110
+ 1111 1011
-----------
  0001 0001  (第8位进位被丢弃)

结果0001 0001是1717,正确。这种简洁性就是所有现代处理器都使用补码进行有符号算术的原因。

范围与代表值

使用8位,补码覆盖范围−128-128到127127。下表列出了几个十进制值及其8位补码表示,展示了正数及其对应的负数。

十进制8位补码
-161111 0000
-151111 0001
-141111 0010
-131111 0011
-121111 0100
-111111 0101
-101111 0110
-91111 0111
-81111 1000
-71111 1001
-61111 1010
-51111 1011
-41111 1100
-31111 1101
-21111 1110
-11111 1111
00000 0000
10000 0001
20000 0010
30000 0011
40000 0100
50000 0101
60000 0110
70000 0111
80000 1000
90000 1001
100000 1010
110000 1011
120000 1100
130000 1101
140000 1110
150000 1111
160001 0000

可以使用计算器探索允许范围内的任何值;对于更宽的范围,只需增加位数。

符号扩展

将补码数移到更大的位宽时,符号(MSB)必须复制到所有新位中。例如,4位值1011(表示−5-5)在8位中变为1111 1011。这个过程称为符号扩展,可以保持数值不变,工具在需要时会自动应用。

为什么补码如此有效

补码的美妙之处在于其效率:减法变成加法,同样的硬件可以同时处理有符号和无符号操作(只要正确处理溢出)。溢出检测也变得直接——当进位进入符号位与从符号位出的进位不同时即发生溢出。这些特性使得补码成为几乎所有现代计算机体系结构中有符号整数表示的基石,从嵌入式微控制器到高端CPU。

无论您是在学习数字逻辑、调试程序,还是只需要将负数二进制数转换为十进制,这个二进制补码计算器都能为您所有的转换提供快速准确的解决方案。

常见问题

1. 究竟什么是补码?它如何表示负数?

补码是一种通过使用最高有效位(MSB)作为符号来编码有符号整数的系统:0表示正数,1表示负数。正数的负数通过翻转所有位并加1得到。这种方法使负数能在二进制算术中被自然处理。

2. 如何手动将十进制数转换为补码?

首先,将数字的绝对值用所需位数写成二进制。如果数字是正数,该二进制形式就是其补码。如果是负数,将正数的二进制所有位取反得到反码,然后加1得到补码。

3. 8位补码可以表示的数字范围是多少?

使用8位,补码可以表示从-128到127的整数。总共256种模式包括一个零、127个正数和128个负数,其中-128没有对应的正数。

4. 如何将补码二进制转换回十进制?

查看最高有效位。如果是0,将数字视为普通无符号二进制并转换为十进制。如果是1,计算整个数的补码(取反加1)得到绝对值,然后加上负号。

5. 为什么补码计算器需要我选择位数?

位宽决定可表示数字的范围和补码的模式。不同的应用使用不同的位宽(例如8位、16位、32位)。选择正确的位宽可确保转换得到正确的有符号表示。

使用方法

  1. 选择二进制表示的位数(4至64位)。
  2. 输入十进制数或二进制值——工具会自动检测并实时计算结果。
  3. 查看补码表示及其对应的十进制值、符号和可表示范围。