数值 / 位运算 / 单位

补码计算器把数值和位模式分清楚

先选输入是数学整数还是已有的位模式,再查看位宽、符号解释与截断结果。

补码计算器

输入

仅输入一个整数,最多 256 个字符。可带与进制匹配的 0b/0o/0x 前缀;不接受内部空格、分隔符、换行或小数。

输入仅在当前浏览器中处理,不会发送到服务器。

结果

十进制结果
-42
输入的十进制数值
-42
有符号十进制
-42
无符号十进制
214
二进制
11010110
十六进制
0xD6
最高位
1
输入允许范围
-128 … 127
有符号范围
-128 … 127
无符号范围
0 … 255
大端字节
D6
小端字节
D6

负数的补码步骤

1. 绝对值的二进制
00101010
2. 每一位取反
11010101
3. 加一得到补码
11010110

选项

数值模式编码数学整数;位模式读取非负整数模式,短模式在左侧补零,不接受负号。

修改选项会重新解释现有文本,不会改写输入。大小端只排列最终结果的完整字节,不反转字节内的位。

输入处于所选范围内。

调试器显示 −1,协议文档却写着 FF,往往是同一组位被赋予了不同含义。补码计算器让你先确定字宽与解释方式,再核对存储模式,避免仅凭十六进制最高位猜测正负。

很多问题出在“编码数值”和“读取已有编码”混在一起:数学值 255 放不进有符号字节,但原始位模式 FF 完全放得下。两种输入方式共享一组输出,让这个区别在计算时就能看见。

为什么使用补码计算器

越界之后仍能核对原值

补码计算器会把 300 保留在输入框中,同时显示它在 8 位下只保留 44。补码溢出与输入格式错误分别说明:前者能继续查看截断后的位,后者必须先修正数字。不会用结果悄悄覆盖原值,也没有“应用截断”按钮。

上方完整位串保留不变,低八位投影到下方短字,高位单独突出显示。

查看换字节后的排列

32 位 0x12345678 的大端字节是 12 34 56 78,小端是 78 56 34 12。这里只交换字节的位置,12 不会变成 21,字节内部的位也不会倒序,数值与符号解释均保持一致。

两种颜色的字节块在上下两行交换位置,每块内部的标记顺序保持不变。

先确定含义,再调整位宽

01

先选数值还是位模式

默认是十进制 −42、8 位、有符号,自动计算开启。已有 FF 数据时,先改为位模式并选十六进制;如果要把负数编码成二进制,则使用数值模式。切换进制会重新读取当前文本,不会替你转换输入框中的数字。

02

留意扩展时补的是什么

位模式 FF 改成 16 位会得到 00FF,读数是 255,不会按原文本长度自动扩展符号位。若想在增大位宽后仍保留数学值 −1,应输入数值 −1;其 16 位结果才是 FFFF。

03

确认状态再取走结果

输入停顿 350 毫秒后自动计算;关闭开关可用计算按钮或 Ctrl/Cmd + Enter。任一参数变化都会让旧结果过期并禁用导出。示例与清空先预览改动字段数,应用后可撤销,输入与结果一起恢复。

从负数编码到协议字节

同一组位,两种十进制读数

有符号整数以最高位参与符号解释,无符号数则把所有位作为大小。8 位 FF 因此分别是 −1 和 255。主读数跟随所选解释,但两种读数与完整范围始终并排保留,适合核对协议字段与语言类型之间的差别。

逐步查看取反加一

负数补码怎么求,可以直接看 −42 的例子:绝对值为 00101010,逐位取反得到 11010101,加一为 11010110。步骤只对处于所选字宽有符号范围内的负数数值展示,包括最小负数;取反这一行不是独立反码转换功能。

完整保留 64 位整数

无符号最大值 18446744073709551615 从解析到格式化都使用精确整数计算,不经过浮点数。二进制与十六进制按位宽补齐,报告附带原文本、模式、进制、范围状态、双读数与字节序,离开页面也能复核参数。

哪些转换有明确边界

超范围只预览模运算
数学数值依据所选有符号或无符号范围判断越界。结果使用模 2^位宽的非负余数保留低位,例如有符号 8 位的 128 预览为 −128,256 预览为 0。这是所选数学规则的结果,不会自动改写原输入。
短位模式只补零
原始位模式必须是非负整数,连 −0 的负号也不接受。短模式左侧补零,额外的前导零不算超宽;是否超宽取决于大小是否超过 2^位宽−1。最高位为 1 只是有符号解释的依据,不等于位模式发生溢出。
严格读取一个整数
支持二、八、十、十六进制及相匹配的可选前缀。只修剪首尾普通空格与制表符,内部空格、分隔符、换行、小数、十进制科学计数法和运算表达式均报错。长度上限为 256 个字符,不提供文件、网址或多行批量入口。
只采用二进制补码
有符号表示法仅为二进制补码,位宽限定 8、16、32、64。没有原码、反码的独立编解码,没有负零和浮点模式,也不支持任意宽度。中间取反步骤用于说明负数的编码过程,不能当成另一套输出规则。
端序不模拟运行时
大小端只改变整个字节的排列,8 位时两者自然相同。本工具不预测编译器异常、处理器标志、饱和运算或语言里的未定义行为;与某段代码结果不同时,应先核对该语言的类型和转换规则。按位逻辑、移位和两数运算由其他工具处理。

补码计算器常见问题

负数的补码如何计算?

先确定字宽,再把绝对值写成同宽二进制,所有位取反后加一。以 8 位 −5 为例,00000101 → 11111010 → 11111011。若原值超出有符号范围,先查看越界提示,不能把截断结果当作原数的精确表示。

8 位和 16 位补码为什么不同?

字宽决定最高位的位置和可表示范围。−1 在 8 位中是 FF,在 16 位中是 FFFF,数值没变但存储长度变了;相反,已有位模式 FF 扩到 16 位时补零,得到的是正数 255。

二进制输入必须填满位宽吗?

不必。选择位模式后,短输入会在左侧补零。例如 8 位下输入 1111 得到 00001111,读作 15。不能把这个四位文本先当作 −1,再自动扩展到八位。过多的前导零也不会单独触发超宽。

补码转换支持小数吗?

这里仅处理整数,小数和科学计数法都会报错。定点数需要另外指定小数位的缩放规则,浮点数又有指数和尾数结构,均不属于本页的整数表示模型。十六进制中合法的 E 是数字,不是指数标记。

8 位补码最小值为什么是 −128?

256 个位模式中,最高位为 0 的一半表示 0 到 127,最高位为 1 的另一半表示 −128 到 −1。零占据非负的一侧,所以负数范围比正数多一个值,+128 不能精确放入有符号 8 位整数。

结果与预期不符?

继续检查一个整数

用补码计算器选择一个边界值,再调整输入含义或位宽。确认状态后复制完整报告,保留原输入和两种解释,便于与协议字段或调试器读数对照。