补码计算器(有符号/无符号整数转换)
在 8、16、32、64 位或任意位宽下,把整数与二进制补码、十六进制互相转换,并显示有符号值和无符号值、溢出情况和取值范围。
| 位宽 | 常见类型 | 有符号最小值 | 有符号最大值 | 无符号最大值 |
|---|---|---|---|---|
| 8 位 | int8_t / uint8_t · sbyte / byte | -128 | 127 | 255 |
| 16 位 | int16_t / uint16_t · short / ushort | -32768 | 32767 | 65535 |
| 32 位 | int32_t / uint32_t · int / uint | -2147483648 | 2147483647 | 4294967295 |
| 64 位 | int64_t / uint64_t · long / ulong | -9223372036854775808 | 9223372036854775807 | 18446744073709551615 |
| 128 位 | Int128 / UInt128 (.NET 7+), __int128 | -170141183460469231731687303715884105728 | 170141183460469231731687303715884105727 | 340282366920938463463374607431768211455 |
| 位宽 | 能容纳吗? | 二进制补码(十六进制) |
|---|---|---|
| 8 位 | 是 | 0xD6 |
| 16 位 | 是 | 0xFFD6 |
| 32 位 | 是 | 0xFFFFFFD6 |
| 64 位 | 是 | 0xFFFFFFFFFFFFFFD6 |
计算机用补码存储负整数:同样的位,在有符号字节中可以表示 −1,在无符号字节中则表示 255。本转换器在 8、16、32、64、128 位或任意自定义位宽下,同时给出位模式的两种解读,以及二进制、十六进制和八进制形式,说明数值是能容纳还是会回绕,并附上较早的反码和原码(符号加绝对值)表示供对比。所有运算都使用精确的大整数,所以 64 位和 128 位的值不会被舍入。
使用方法
- 输入数字:像 -42 这样的十进制数,或十六进制/二进制/八进制位模式。
- 选择这个数字是用哪种形式书写的。
- 选择位宽——字节用 8,int 用 32,long 用 64,也可以自定义。
- 查看有符号值、无符号值、位模式以及溢出检查。
计算公式
位模式 = x mod 2ⁿ · 有符号值 = 位模式 ≥ 2ⁿ⁻¹ 时取 位模式 − 2ⁿ,否则取 位模式
n 为位宽。负数 x 变为 2ⁿ − |x|,等同于把 |x| 的各位取反再加 1。n 位有符号值的范围是 −2ⁿ⁻¹ 到 2ⁿ⁻¹ − 1,无符号值是 0 到 2ⁿ − 1。超出这两个范围的十进制数只保留最低的 n 位——与 C 或 Java 的强制转换产生的回绕相同。
示例
8 位的 −42:256 − 42 = 214,所以位模式是 1101 0110 = 0xD6,无符号字节把它读作 214。反码是 1101 0101,原码是 1010 1010。在 16 位下,同一个值是 0xFFD6,在 32 位下是 0xFFFFFFD6。
常见问题
为什么负数一侧的范围多一个?
0 占用了非负数位模式中的一个,所以 8 位有符号字节能表示 −128 到 127。−128 没有对应的正数:对它取负会溢出,结果仍是 −128。
怎样手工求补码的相反数?
把每一位取反再加 1。5 是 0000 0101;取反得 1111 1010;加 1 得 1111 1011,也就是 −5。
溢出时会发生什么?
硬件只保留最低的 n 位。无符号字节中的 300 变为 300 − 256 = 44。在 C 中,有符号溢出属于未定义行为,编译器不一定回绕;Java 和 C#(unchecked)则会回绕。
反码和原码现在用在哪里?
如今整数基本不再使用。原码保留在浮点数的符号位中,反码保留在互联网校验和(RFC 1071)中。
最后更新:
包含这些输入的页面地址: https://kakao.mobile/zh/tools/signed-unsigned-converter/
引用此工具
kakaoCalc. (2026, November 8). 补码计算器(有符号/无符号整数转换). https://kakao.mobile/zh/tools/signed-unsigned-converter/
“补码计算器(有符号/无符号整数转换).” kakaoCalc, 8 Nov. 2026, kakao.mobile/zh/tools/signed-unsigned-converter/.