十六进制数字对照表
每一位十六进制数字对应一个从零到十五的数值,也正好对应四位二进制数字。
| 十六进制数字 | 十进制值 | 二进制(4 位) |
|---|---|---|
| 0 | 0 | 0000 |
| 1 | 1 | 0001 |
| 4 | 4 | 0100 |
| 7 | 7 | 0111 |
| 9 | 9 | 1001 |
| A | 10 | 1010 |
| C | 12 | 1100 |
| F | 15 | 1111 |
- 每个操作数的输入限制为 12 位十六进制数字,运算结果必须落在 IEEE 754 双精度浮点数的精确整数范围内(2⁵³ − 1);超出该范围的结果会被拒绝,而不是被四舍五入。
- 减法运算可能得到负数结果,会以负号显示;这里不使用补码表示法。
什么是十六进制运算?
十六进制是一种以 16 为基数的位置计数系统:每个数位代表 16 的某次幂,十六个数字符号依次是 0–9,再加上 A(十)、B(十一)、C(十二)、D(十三)、E(十四)和 F(十五)。十六进制数 1A 表示 1×16 + 10 = 26(十进制),2F 表示 2×16 + 15 = 47。
十六进制运算的规则和十进制运算相同,只是进位和借位发生在满十六时,而不是满十时。把十六进制数字 A 和 F 相加得到二十五,写成十六进制就是 19——写 9,进 1。大多数人觉得先换算成十进制、计算完再换回十六进制更容易,而这正是本计算器内部实际采用的做法。
十六进制之所以在计算机领域占有重要地位,是因为 16 = 2⁴:一位十六进制数字正好对应四位二进制数字,因此一个字节(8 比特)总是可以用两位十六进制数字表示,范围从 00 到 FF。内存地址、颜色值、校验和以及原始字节转储惯例上都用十六进制书写,常常带有 0x 前缀。
如何使用这个十六进制计算器
- 输入第一个十六进制数(数字 0–9 和字母 A–F;可以带 0x 前缀,也可以不带)。
- 选择运算方式:加、减、乘——或者选择「仅换算」,只把第一个数换算成其他进制。
- 如果是算术运算,再输入第二个十六进制数。
- 查看以十六进制、十进制和二进制表示的结果。在「仅换算」模式下,输出显示的是第一个数的十进制和二进制形式。
十六进制运算背后的数学原理
先把每个操作数逐位对照 16 的幂求出其十进制数值;对这些十进制数值执行运算;再把结果通过反复除以 16 重新表示成十六进制。
示例:1A + 2F。换算成十进制,1A = 26,2F = 47,两者之和为 73。再换回十六进制:73 ÷ 16 = 商 4 余 9,所以 73 用十六进制写作 49,用二进制写作 1001001。按列逐位计算结果一致:A + F = 25 = 19₁₆,写 9 进 1;接着 1 + 2 + 1 = 4——得到 49₁₆。
常见错误
- 手动相加十六进制数字时按满十进位,而不是按满十六进位——A + F 等于 19₁₆(写 9,进 1),而不是 25。
- 把十六进制数字当十进制来读:10₁₆ 是十六,不是十;100₁₆ 是 256。
- 在抄写十六进制数值时,把字母 O 和数字 0 混淆,或把小写字母 l 和 1 混淆。
- 忘记一个字节正好是两位十六进制数字——省略前导零(0x0F → F)在数值上没有影响,但会破坏固定宽度的字节记法。
常见问题
如何手动相加两个十六进制数?
从右往左逐列相加,做法和十进制加法完全一样,只是当某一列达到十六时才进位。以 1A + 2F 为例:A(10)+ F(15)= 25 = 16 + 9,所以写 9 进 1;接着 1 + 2 + 1 = 4。结果是十六进制的 49,换算成十进制是 73。
数字前面的 0x 是什么意思?
前缀 0x 用来标记一个数字是十六进制,以便和十进制区分开来。它源自 C 语言,如今已经近乎通用:0x1A 表示十六进制的 1A,也就是十进制的 26。本计算器接受带前缀或不带前缀的十六进制输入。
如何把十六进制换算成十进制?
把每一位十六进制数字的值,乘以其所在位置对应的 16 的幂次(从最右边一位记为第 0 位开始计数),再把结果相加。以 2F 为例:2×16 + 15×1 = 47。以 1A3 为例:1×256 + 10×16 + 3×1 = 419。字母 A–F 分别代表数值 10–15。
如何把十六进制换算成二进制?
把每一位十六进制数字替换成对应的 4 位二进制数:2F 变成 0010 1111。这种逐位对应的捷径之所以成立,是因为 16 = 2⁴,因此不需要任何计算——这也是十六进制被用作二进制数据速记法的主要原因。
这个计算器能处理负的十六进制数吗?
减法运算可能得到负数结果,会以前置负号显示(例如 5 − A = −5)。本计算器不使用补码编码——那是处理器内部使用的固定宽度惯例,同一个比特模式在其中既可能表示一个较大的无符号数,也可能表示一个负的有符号数。
参考文献
- Knuth DE. The Art of Computer Programming, Volume 2: Seminumerical Algorithms, 3rd edition, Addison-Wesley, 1997 — radix arithmetic and conversion.
- IEEE Std 754-2019. IEEE Standard for Floating-Point Arithmetic — exact-integer limits of double precision.