跳到正文
BCBinary Code Translator
菜单

定宽有符号整数

二进制补码转换器

在有符号十进制、无符号十进制与固定宽度二进制位串之间转换,明确展示有符号和无符号解释。

所有范围判断、掩码和格式化都使用浏览器 BigInt 本地执行。

位模式

尚无结果

十六进制模式

尚无结果

有符号十进制

尚无结果

无符号十进制

尚无结果

二进制补码表示什么

二进制补码是计算机保存有符号整数的主流方式。固定宽度决定可用位模式:最高位为 0 时通常表示非负数,最高位为 1 时表示负数。8 位的 01111111 是 127,10000000 是 -128,11111111 是 -1。相同位模式若按无符号读取,又会得到 0 到 255 的值。

本工具把“宽度”和“解释方式”明确分开。有符号模式严格检查有符号范围,无符号模式检查原始位模式范围,位串模式要求恰好等于所选宽度,并同时给出两种十进制解释。不会对越界输入静默截断或回绕。

使用方法

先确认输入来自数学数值还是原始位模式。

  1. 选择有符号十进制、无符号十进制或精确位串。
  2. 选择 8、16、32 或 64 位,这会决定范围、符号位和输出长度。
  3. 输入整数或仅由 0/1 组成的完整位串。
  4. 点击“计算”,查看位串、补零后的十六进制以及两种十进制解释。
  5. 复制到代码或调试器时保留位宽和前导零,否则符号含义可能改变。

补码示例

除特别说明外,下列案例使用 8 位。

输入 位模式 说明
42(有符号) 00101010 正数使用普通二进制并补足前导零。
-42(有符号) 11010110 对 42 的位模式取反再加一。
-1(有符号) 11111111 任意常见位宽下,全 1 都表示 -1。
128(无符号) 10000000 无符号是 128,有符号解释则是 -128。
32767(16 位) 0111111111111111 16 位有符号最大值。
-9223372036854775808(64 位) 8000000000000000(十六进制) 64 位有符号最小值只有符号位为 1。

位宽、范围与输入规则

n 位有符号范围为 -2ⁿ⁻¹ 到 2ⁿ⁻¹-1,无符号范围为 0 到 2ⁿ-1。8 位分别是 -128 到 127,以及 0 到 255。64 位边界也会通过 BigInt 精确处理。

十进制可带正负号、空格或下划线。位串可带 0b 前缀及分组符,但清理后必须恰好等于所选位宽,避免自动零扩展或符号扩展造成歧义。

  • 有符号模式越界会报错,不会自动回绕。
  • 无符号模式拒绝负数和超过全 1 模式的值。
  • 位串模式保留前导零,并同时显示有符号与无符号含义。
  • 8/16/32/64 位对应 2/4/8/16 位十六进制输出。

补码算法

非负数直接使用普通二进制。负数 x 在 n 位中的无符号模式为 2ⁿ+x,例如 -42 在 8 位中是 256-42=214,即 11010110。

解码时先按无符号读取。如果最高位为 0,有符号值相同;如果为 1,则减去 2ⁿ。

所有计算都使用 BigInt,因此 64 位最小值、最大值和无符号最大值不会丢失精度。

实际用途

当原始字节需要解释为固定宽度有符号整数时,补码是必要工具。

调试寄存器和内存

把调试器中的字节、字或寄存器同时解释为有符号和无符号数。

解析二进制协议

核对传感器读数、计数器、音频样本或设备字段。

编写边界测试

生成最小值、最大值、-1、0 和符号跳变的精确模式。

理解整数溢出

观察固定寄存器中最高位变化为何会改变符号。

常见错误与边界

位宽缺失或有符号/无符号混用是最常见原因。

选择错误位宽

11111111 在 8 位是 -1,零扩展到 16 位后却是 255。

十进制越界

8 位有符号不能表示 128,但 8 位无符号可以。

丢失前导零

缩短后的位串可能保留无符号大小,却失去原始存储宽度。

混淆其他负数编码

本工具只实现二进制补码,不处理符号-数值或反码。

与相关工具的区别

补码关注固定宽度下的解释,而不是只改变进制。

十进制转二进制

普通转换可能写成 -101010;补码给出真实存储模式 11010110。

位运算计算器

位运算会组合或移动位,本页只转换和解释单个值。

IEEE-754

浮点数使用符号、指数和尾数字段,不是整数补码。

八进制/十六进制转换

普通进制转换保持数学值,补码解释会依据最高位和宽度改变有符号值。

常见问题

为什么有符号范围不对称?

补码只有一个零,因此负数比正数多一个,8 位范围是 -128 到 127。

为什么 11111111 同时是 255 和 -1?

位本身没有符号;无符号读取为 255,8 位补码读取为 -1。

可以少输入几位让工具自动补零吗?

不可以,位串模式要求精确宽度,避免把符号扩展误当成零扩展。

会模拟溢出吗?

十进制越界会被拒绝,不会静默回绕;需要定宽运算时请使用位运算计算器。

64 位结果是否精确?

精确,解析、范围检查和掩码都使用 BigInt。

十六进制输出带符号吗?

十六进制表示原始位模式,符号只存在于对该模式的十进制解释中。

相关工具

查看全部工具

Cookie 偏好设置

管理你的 Cookie 偏好。必要 Cookie 无法关闭。

必要 Cookie

必要

用于语言选择、隐私选择和网站基础功能,属于必需项。

Cookie: NEXT_LOCALE

分析 Cookie

可选的分析 Cookie 可帮助我们了解访问情况并改进网站。

Cookie: _ga, _gid, _gat, _clck, _clsk

广告 Cookie

可选的广告 Cookie 可能用于展示相关广告并衡量广告效果。

Cookie: __gads, _gcl_au, IDE