这个转换器能做什么
本工具可在计算机领域最常用的四种数制之间转换整数:二进制(基数 2)、八进制(基数 8)、十进制(基数 10)和十六进制(基数 16)。只需输入一个数值,告诉计算器它采用的是哪种进制,工具就会同时给出在这四种数制下的对应写法。
使用方法
在数值框中输入数字,从下拉菜单中选择它所属的进制,然后查看结果即可。对于十六进制,你可以使用数字 0-9 和字母 A-F(不区分大小写),开头可选的 0x 或 0b 前缀会被自动去除。如果某个数字对所选进制无效,结果会回退为零。
计算原理
要把一个数转换成十进制,需将每一位数字乘以基数的对应次幂(从右往左、从 0 开始计位),再把这些乘积相加:
$$\text{数值} = \sum_{i=0}^{k-1} d_i \cdot \text{基数}^{\,i}$$反向转换时,则用十进制数值不断除以目标进制;每次的余数就是一位数字,把这些余数从最后一次到第一次倒着读出,即可得到转换后的数。
实例演示
以二进制 1111 为例。换算成十进制为 $$1\times2^3 + 1\times2^2 + 1\times2^1 + 1\times2^0 = 8 + 4 + 2 + 1 = 15$$ 再把 15 转换成十六进制:\(15 \div 16 = 0\) 余 \(15\),而 15 对应数字 F。换成八进制时,\(15 \div 8 = 1\) 余 \(7\),因此结果是 17。
常见数制等价物
计算中使用的四种位置计数制具有相同的值——只是基数(进制)不同。十进制(十进制)是日常计数系统;二进制(二进制)是数据物理存储的方式;八进制(八进制)和十六进制(十六进制)是分组比特的简洁缩写。下表列出了所有四种系统中最常见的值。
| 十进制(十进制) | 二进制(二进制) | 八进制(八进制) | 十六进制(十六进制) |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 1 | 1 | 1 | 1 |
| 2 | 10 | 2 | 2 |
| 3 | 11 | 3 | 3 |
| 4 | 100 | 4 | 4 |
| 5 | 101 | 5 | 5 |
| 6 | 110 | 6 | 6 |
| 7 | 111 | 7 | 7 |
| 8 | 1000 | 10 | 8 |
| 9 | 1001 | 11 | 9 |
| 10 | 1010 | 12 | A |
| 11 | 1011 | 13 | B |
| 12 | 1100 | 14 | C |
| 13 | 1101 | 15 | D |
| 14 | 1110 | 16 | E |
| 15 | 1111 | 17 | F |
| 16 | 10000 | 20 | 10 |
| 32 | 100000 | 40 | 20 |
| 64 | 1000000 | 100 | 40 |
| 128 | 10000000 | 200 | 80 |
| 255 | 11111111 | 377 | FF |
| 256 | 100000000 | 400 | 100 |
| 1024 | 10000000000 | 2000 | 400 |
注意255(8位字节能容纳的最大值)在二进制中是8个1,在十六进制中是FF,而256需要第9位。这些边界值在颜色、内存大小和网络掩码中不断出现。
关键术语解释
- 基数 / 进制
- 计数制使用的不同数字符号的数量,以及当向左移动时每个位置相乘的值。十进制的基数为10(数字0–9),二进制的基数为2(0–1),八进制的基数为8(0–7),十六进制的基数为16(0–9然后A–F)。位置\(i\)上的数字\(d_i\)对总数的贡献是\(d_i \cdot \text{基数}^{\,i}\)。
- 比特
- 一个二进制数字——最小的数据单位,保存单个0或1。\(n\)个比特可以表示\(2^n\)个不同的值。
- 半字节
- 4个比特的组合。一个半字节可以容纳\(2^4 = 16\)个值,恰好是一个十六进制数字(0–F)。这就是为什么十六进制与二进制完全对应——每个十六进制数字是一个半字节。
- 字节
-
8个比特(两个半字节)的组合,表示\(2^8 = 256\)个值,从0到255。一个字节写成两个十六进制数字,例如
FF= 255。 - 最高有效位(MSD)
- 最左边的数字,具有最大的位置权重(基数的最高次幂)。在二进制中,它是最高有效位(MSB)。
- 最低有效位(LSD)
- 最右边的数字,具有最小的权重(\(\text{基数}^0 = 1\))。在二进制中,它是最低有效位(LSB),决定一个值是奇数还是偶数。
- 0b前缀
-
一种约定(在C、Python等中使用),标记一个字面量为二进制,例如
0b1010表示十进制10。0b只是记号,不是值的一部分。 - 0x前缀
-
十六进制字面量的标准标记,例如
0xFF表示十进制255。八进制通常用前导0或0o前缀表示。 - 十六进制数字A–F
-
由于十六进制需要16个符号,但只有0–9作为普通数字存在,字母A–F代表值10–15:
A=10、B=11、C=12、D=13、E=14、F=15。它们可以用大写或小写字母表示。
常见问题
支持十六进制的字母吗? 支持——十六进制下可使用 A–F(大写或小写均可)。
能转换负数或小数吗? 不能,本转换器仅适用于非负整数。
为什么我的十进制结果带有千位分隔符? 这是为了便于阅读而添加的;二进制、八进制和十六进制属于按位编码,因此输出时不带分隔符。