进制换算对照表
下表列出了同一批数值在四种进制下的写法。注意一位十六进制数字对应四位二进制数字,一位八进制数字对应三位二进制数字。
| 十进制 | 二进制 | 八进制 | 十六进制 |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 5 | 101 | 5 | 5 |
| 8 | 1000 | 10 | 8 |
| 10 | 1010 | 12 | A |
| 15 | 1111 | 17 | F |
| 16 | 10000 | 20 | 10 |
| 100 | 1100100 | 144 | 64 |
| 255 | 11111111 | 377 | FF |
- 本计算器支持的非负整数范围,上限为 IEEE 754 双精度浮点数的安全整数极限(2⁵³ − 1 = 9,007,199,254,740,991);超出该范围的输入会被拒绝,而不是被悄悄四舍五入。
- 小数和负数(补码表示法)不在本换算器的处理范围之内。
什么是二进制数系?
二进制是一种以 2 为基数的位置计数系统:它只用数字 0 和 1 来书写任何数值,每个位置代表 2 的某次幂。从右往左读二进制数 1010,各数位依次表示 0×1 + 1×2 + 0×4 + 1×8,换算成十进制就是 10。数字电路以二进制形式存储和处理信息,是因为一个具有两种状态(通/断)的电路元件正好对应一个二进制位,也就是一个比特(bit)。
十六进制(16 进制)和八进制(8 进制)是与二进制紧密配合的紧凑记法。因为 16 = 2⁴,一位十六进制数字正好对应四位二进制数字;因为 8 = 2³,一位八进制数字正好对应三位二进制数字。十六进制使用数字 0–9 以及字母 A–F 来表示十到十五这几个值;十进制数 255 用二进制写作 11111111,用十六进制写作 FF,用八进制写作 377。
所有位置计数系统都遵循同一条规则:一个以基数 b 书写、数位为 dₙ…d₁d₀ 的数,其值等于每一位数字乘以 b 的相应次幂后求和。因此进制之间的换算纯粹是一种记法上的操作——先按源进制求出各数位对应的数值总和,再反复除以目标进制来写出结果。
如何使用这个二进制计算器
- 输入你想换算的数字(最多 64 位数字;0b、0x 或 0o 这类前缀会被接受并自动忽略)。
- 选择该数字所使用的进制——二进制、十进制、十六进制或八进制。
- 查看十进制数值,以及对应的二进制、十六进制和八进制表示。
- 只有对所选进制合法的数字才会被接受;例如数字 8 在八进制输入中是非法的。
进制换算背后的数学原理
换算成十进制时,把每个数位乘以其基数的相应次幂(从右边第 0 位开始计数)后求和。从十进制换算成其他进制时,反复除以目标进制,并按相反顺序读取每次得到的余数。
示例:二进制 1010 等于 1×2³ + 0×2² + 1×2¹ + 0×2⁰ = 8 + 2 = 10(十进制)。把 10 写成其他进制:10 ÷ 16 = 商 0 余 10 → 十六进制为 A;10 ÷ 8 = 商 1 余 2 → 八进制为 12。
常见错误
- 把其他进制中的「10」读作「十」——在任何位置计数系统中,10 表示的都是该进制的基数本身(10₂ = 2,10₈ = 8,10₁₆ = 16)。
- 使用在所选进制中并不存在的数字,例如在八进制中使用 8 或 9,或在十六进制中使用超过 F 的字母。
- 混淆各进制对应的位组大小:一位十六进制数字是四个比特,一位八进制数字是三个比特,二进制数字分组不正确就会导致换算错误。
- 忘记前导零不会改变数值:0010₂ 和 10₂ 在十进制中都是 2。
常见问题
如何手动把二进制换算成十进制?
把每一位二进制数字乘以其所在位置对应的 2 的幂次(从最右边一位开始记为第 0 位),再把结果相加。以 1101 为例:1×8 + 1×4 + 0×2 + 1×1 = 13。从右往左,各位置对应的值依次是 1、2、4、8、16、32,以此类推。
如何把十进制换算成二进制?
反复用该数除以 2,并记录每次的余数。把这些余数按相反顺序排列,就是对应的二进制结果。以 13 为例:13÷2 = 商 6 余 1,6÷2 = 商 3 余 0,3÷2 = 商 1 余 1,1÷2 = 商 0 余 1——从下往上读得到 1101。
为什么计算机使用二进制?
数字电路能够可靠地区分两种电压状态,而每种状态正好对应一个二进制位(比特)。围绕两种状态来构建硬件,使存储和逻辑运算既简单又抗干扰,因此所有主流处理器和存储器在物理层面都以二进制表示数据,无论程序员在上层使用何种记法。
十六进制有什么用途?
十六进制是一种紧凑地书写二进制的方式:一位十六进制数字正好编码四个比特,所以一个字节总是可以用两位十六进制数字表示(00–FF)。它是内存地址、颜色代码(如 #FF6600)、MAC 地址和原始数据转储的标准记法,因为它比二进制短得多,同时又能逐位对应换算。
这个计算器能接受的最大数字是多少?
输入限制为最多 64 位数字,数值不超过 2⁵³ − 1 = 9,007,199,254,740,991,这是 IEEE 754 双精度浮点数能够精确表示的最大整数。超过这个界限,普通的 JavaScript 数值就会失去整数精度,因此计算器会拒绝该输入,而不是返回一个被四舍五入过的结果。
参考文献
- Knuth DE. The Art of Computer Programming, Volume 2: Seminumerical Algorithms, 3rd edition, Addison-Wesley, 1997 — positional number systems and radix conversion.
- IEEE Std 754-2019. IEEE Standard for Floating-Point Arithmetic — double-precision format and exact-integer range.