转换

二进制补码计算器

设置
重置
分享结果
保存
嵌入
报告错误

分享计算器

将我们的免费计算器添加到您的网站

来源

请输入有效的 URL。仅支持 HTTPS URLs。

样式

输入框边框聚焦颜色,开关框选中颜色,选择项悬停颜色等。

高级

请同意使用条款。

预览

保存计算器

计算器设置

请输入在允许范围内的值。

请输入在允许范围内的值。

请输入在允许范围内的值。

请输入在允许范围内的值。

分享计算器

什么是二进制补码?

二进制补码是计算机用固定位数存储有符号整数(可为正或为负的数)的标准方式。它不为负号单独保留一个符号,而是对负数进行编码,使普通的二进制加法直接成立,无需对符号做特殊处理。几乎每一款现代 CPU 都以这种方式表示整数。

本计算器接收一个十进制整数和一个位宽(8、16 或 32 位),并以二进制和十六进制两种形式显示其二进制补码位模式。

它是如何工作的?

对于所选的 ww 位宽度,每个数值都以无符号位模式存储:

  • 如果数字 nn非负的,其位模式就是 nn 的二进制,并在前面补零至 ww 位。
  • 如果数字 nn的,其位模式是 2w+n2^w + n 的二进制。

由于第二种情况下 nn 为负,2w+n2^w + n 是一个小于 2w2^w 的正值,因此它总能容纳在 ww 位中。最高有效位(最左侧位)对每个负数都为 11,对每个非负数都为 00——该位起到符号位的作用。

公式

pattern(n)={nif n02w+nif n<0\text{pattern}(n) = \begin{cases} n & \text{if } n \ge 0 \\ 2^{w} + n & \text{if } n < 0 \end{cases}

结果随后以恰好 ww 个二进制数字(或 w/4w/4 个十六进制数字)写出。

计算实例

示例 1:正数

88 位中编码 n=5n = 5。由于 505 \ge 0,位模式就是 55 的二进制,补足到八位:

5000001012=0x055 \rightarrow 00000101_2 = \text{0x05}

示例 2:负一

88 位中编码 n=1n = -1。由于 1<0-1 < 0,计算 28+(1)=2561=2552^8 + (-1) = 256 - 1 = 255

255111111112=0xFF255 \rightarrow 11111111_2 = \text{0xFF}

无论位宽如何,负一始终是一连串不间断的 1。

示例 3:负五

88 位中编码 n=5n = -5。计算 28+(5)=2565=2512^8 + (-5) = 256 - 5 = 251

251111110112=0xFB251 \rightarrow 11111011_2 = \text{0xFB}

参考表(8 位)

十进制二进制补码十六进制
5000001010x05
0000000000x00
-1111111110xFF
-5111110110xFB
127011111110x7F
-128100000000x80

注意事项

  • 一个 88 位有符号整数的范围是 128-1281271271616 位的范围是 32,768-32{,}76832,76732{,}7673232 位的范围大约是 ±2.1\pm 2.1 十亿。超出所选范围的值会按模 2w2^w 回绕。
  • 首位是符号位:00 标记非负数,11 标记负数。
  • 若要将一个不带符号位的普通非负数转换为二进制,请使用十进制到二进制转换器,或使用通用的数字系统转换器处理其他进制。

常见问题解答

二进制补码中的 -1 是什么?

在任何位宽下它都是全 1:8 位为 11111111211111111_2(0xFF),16 位为 111111111111111121111111111111111_2(0xFFFF),依此类推。

如何手动求负数的二进制补码?

将该数的绝对值写成二进制,翻转每一位,然后加一。对于 8 位中的 5-5550000010100000101,翻转后得到 1111101011111010,加一得到 1111101111111011——与 2565=251256 - 5 = 251 的结果相同。

为什么位宽很重要?

位宽决定了位模式占用多少位,从而决定了可存储数字的范围。随着位宽增大,同一个十进制值会产生更长的前导 0 或 1 串。

报告错误

此字段为必填项。