如何将十进制转换为十六进制
- 输入一个十进制数,或每行一个数字的列表。也支持负数和
0.75这样的小数。 - 十六进制结果会立即显示,同时给出二进制和八进制值。分步计算表列出了每一次除以 16 的运算及其余数。
- 如需得到负数的十六进制补码,请勾选有符号(补码)并选择位宽:−1 在 8 位下是
FF,在 32 位下是FFFFFFFF。
如何手算十进制转十六进制
使用“除 16 取余,逆序排列”的方法:
- 用这个数除以 16,记下余数(0–15)。
- 再用商除以 16,如此重复,直到商为 0。
- 把每个余数写成十六进制数字(10 = A,11 = B,12 = C,13 = D,14 = E,15 = F),然后从最后一个余数读到第一个。
示例:将 6719 转换为十六进制。
| 除法 | 商 | 余数 |
|---|---|---|
| 6719 ÷ 16 | 419 | 15 = F |
| 419 ÷ 16 | 26 | 3 |
| 26 ÷ 16 | 1 | 10 = A |
| 1 ÷ 16 | 0 | 1 |
从下往上读出余数,得到 1A3F。验算:1 × 4096 + 10 × 256 + 3 × 16 + 15 = 6719。
十进制小数转十六进制
小数点后的部分不用除法,而是乘以 16:每次乘积的整数部分就是下一位十六进制数字(即“乘 16 取整,顺序排列”)。0.75 × 16 = 12,所以 0.75 的十六进制是 0.C。
有些小数在十六进制下永远除不尽。0.1 × 16 = 1.6,得到数字 1;接着 0.6 × 16 = 9.6,得到 9,之后 9 会无限重复,因此 0.1 = 0.1999…。转换器会把这类数值舍入到 12 位十六进制数字(0.19999999999A),并用 ≈ 标记。
负数转十六进制(补码)
计算机用 w 位存储负数 −n 时,实际存储的是 2ʷ − n。要得到它的位模式,只需把负数加上 2ʷ,再将结果转换为十六进制:−26 的 8 位补码是 256 − 26 = 230 = E6。
| 十进制 | 8 位 | 16 位 | 32 位 |
|---|---|---|---|
| −1 | FF | FFFF | FFFFFFFF |
| −2 | FE | FFFE | FFFFFFFE |
| −26 | E6 | FFE6 | FFFFFFE6 |
| −128 | 80 | FF80 | FFFFFF80 |
常见问题
255 的十六进制是多少?
255 的十六进制是 FF:255 ÷ 16 = 15 余 15,接着 15 ÷ 16 = 0 余 15,两个余数都写作 F。FF 是一个字节能表示的最大值。
如何在 Excel、Python 或 JavaScript 中将十进制转换为十六进制?
Excel 和 Google 表格:=DEC2HEX(255) 得到 FF。Python:format(255, 'X') 得到 FF,hex(255) 得到 0xff。JavaScript:(255).toString(16) 得到 ff。在 Excel 中,负数会以 10 位十六进制补码的形式输出:=DEC2HEX(-1) 的结果是 FFFFFFFFFF。
为什么 0.1 无法精确转换为十六进制?
因为 1/10 无法写成有限个 1/16、1/256 等分数之和,所以它的十六进制数字会无限循环(0.1999…),就像十进制中 1/3 = 0.333… 一样。由二分之一、四分之一、八分之一或十六分之一组成的小数则可以精确表示:0.5 的十六进制是 0.8,0.75 是 0.C。
可以转换非常大的数吗?
可以。转换器采用任意精度运算,因此 18446744073709551616(2⁶⁴)会精确地得到 10000000000000000,远远超出普通 JavaScript 数字 2⁵³ 的精度上限。