二进制补码转换器 (8–64 位)
转换
二进制补码是几乎所有计算机存储有符号整数的方式:最高位是符号位,负数通过对其数值的位取反再加一得到。本转换器接受任意整数 — 以十进制、hex(0x)、二进制(0b)或八进制(0o)输入,正负皆可 — 将其装入所选的 8、16、32 或 64 位宽度,并显示突出符号位的结果位模式。从这一个模式中同时读出有符号(补码)值与无符号值,并附带 hex、八进制和反码。它能快速回答诸如「0xFF 作为有符号字节是什么?」(−1)或「−128 在 8 位中如何存储?」(0x80)之类的问题,并展示数值在超出宽度时如何回绕。任意精度 BigInt 运算保证 64 位值精确。全部在本地运行;不上传任何内容。
—
hex 加 0x,二进制加 0b,八进制加 0o 前缀;否则为十进制。允许前导 −。
位模式
1101 0110
有符号 (补码)-42
无符号214
Hex0xd6
八进制0o326
反码0x29
补码:最高位是符号位。同一模式可读作一个有符号值和一个无符号值。
使用方法
- 以十进制输入值,或为 hex、二进制、八进制加 0x / 0b / 0o 前缀。
- 选择位宽(8、16、32 或 64)。
- 查看有符号/无符号值、位模式、hex/八进制与反码;若值未能容纳而回绕,会出现提示。
常见问题
- 负数如何表示?
- 在补码中,取绝对值的二进制,将每一位取反(反码),再加一。对于 8 位的 −5:5 是 00000101,取反为 11111010,加一为 11111011 = 0xFB。最高位为 1 表示其为负。本工具会对任意宽度自动完成。
- 为什么 0xFF 同时显示为 255 和 −1?
- 同一位模式按无符号或有符号读取会表示不同的数。作为无符号字节,11111111 是 255;作为有符号补码字节,是 −1。硬件与语言按类型选定一种解释(如 uint8 与 int8),本工具则同时显示两者。
- 若我的数装不下该宽度会怎样?
- 会回绕。超出宽度范围的值会对 2^宽度 取模 — 这正是定宽整数运算在溢出时所做的。例如 8 位的 300 变为 300 − 256 = 44,有符号读法由该模式得出。发生回绕时会有提示。
- 反码与补码有何区别?
- 反码只是按位取反 — 每个 0 变 1,反之亦然。补码是反码加一,现代 CPU 用它表示有符号整数,因为它只有一个零且使加法统一。工具额外显示反码作为参考。
相关工具
BCD 转换器(二进制编码十进制)
十进制与 8421 二进制编码十进制互转 — 每位 4 比特半字节、压缩 BCD 十六进制字节、BCD 有效性校验。
转换00
格雷码转换器
在十进制、二进制和反射二进制格雷码之间双向转换,可选固定位宽并附 0-7 对照表。
转换00
IEEE 754 浮点转换器 (32 与 64 位)
查看任意数字在 float32 与 float64 下的精确 IEEE 754 位布局 — 符号、指数与尾数位、hex、存储值与舍入 — 或将 hex 位解码回数字,全部在浏览器内完成。
转换00
罗马数字转换器
在 1 到 3999 的阿拉伯数字与罗马数字之间互转。
转换00
进制转换器
在二进制、八进制、十进制和十六进制之间转换数字。
转换00
单位换算
换算长度、重量、温度、面积、体积、速度和时间。
转换00