进制转换百科:一套公式讲清所有进制怎么换
不管基数是几,换算方法只有两套:位权展开和除基取余。这一页把它们彻底讲透,并补齐课本里常常一笔带过的负数、小数与任意进制话题。
任意进制换算器(2 - 36 进制)
不止四种常用进制:下拉框收录了 2 到 36 之间的常用基数,36 进制使用 0-9 与 A-Z。
核心公式:位权展开
所有进制都遵循同一个数学结构。设基数为 b,一个 n 位数从右往左第 i 位(i 从 0 开始)的数字是 dᵢ,则它对应的十进制值为:
值 = dₙ₋₁×bⁿ⁻¹ + … + d₂×b² + d₁×b¹ + d₀×b⁰
举个跨进制的例子验证一下。三十六进制的 ZZ(Z 代表 35):Z×36 + Z = 35×36 + 35 = 1295。再比如十二进制的 1B(B 代表 11):1×12 + 11 = 23。公式不需要记忆变形,任何基数都直接套用,这也是它比背「二进制怎么转、八进制怎么转」更划算的原因——一张公式卡走遍所有进制。
反过来,十进制转基数为 b 的进制用「除 b 取余」:不断除以 b、记下余数,直到商为 0,再把余数倒序排列。两者一个负责「读出」,一个负责「写出」,合起来就是进制换算的全部。想随时验算,用本页顶部的任意进制换算器即可,它支持 2 到 36 的全部基数。
为什么是「满 b 进一」
基数的含义是「这一位集满多少个一就向高位进位」。十进制数到 9 之后再加 1,个位没有新符号可用,只能清零并给十位加 1;二进制数到 1 之后再加 1,同理清零进位变成 10。基数越小,符号越少但位数越长;基数越大,表达越紧凑但需要更多符号——十六进制为此引入了字母,三十六进制干脆用尽 26 个字母。
四条捷径:常用进制之间的快速通道
捷径一:二进制 ↔ 十六进制,4 位一组
2⁴ = 16,二进制每 4 位对应 1 位十六进制。二转十六从右往左分组、补零、查表;十六转二进制则每个字符直接展开成 4 位。这是所有捷径里使用频率最高的一条,调试内存、看十六进制转储文件都靠它。详细示例见二进制转换页。
捷径二:二进制 ↔ 八进制,3 位一组
2³ = 8,道理相同,只是每组变成 3 位。例如二进制 1111101 分组 001 / 111 / 101,即八进制 175。Linux 文件权限就是这条捷径的日常应用,见八进制转换页的 755 实例。
捷径三:八进制 ↔ 十六进制,借道二进制
八进制和十六进制之间没有直接的分组关系(3 和 4 没有公倍数意义上的对应),最快路径是先展开成二进制再重新分组:八进制 175 → 001111101 → 0111 1101 → 0x7D。整个转换只是查表和分组,不需要乘除。
捷径四:任何进制 → 十进制 → 任何进制
遇到不熟悉的基数(比如五进制、十二进制),最稳妥的方法永远是「两段式」:先用位权展开折算成十进制,再用除基取余写出目标进制。位数不多时手算完全可行,位数多或数值大时交给转换器,逐位运算不会出错。
进阶话题:负数、小数与任意进制
负数与补码
计算机里没有单独的减法电路,负数统一用补码(Two's Complement)表示:正数的补码是它本身;负数的补码 = 对应正数按位取反后整体加 1。以 8 位为例,+45 是 00101101,取反得 11010010,加 1 得 11010011,这就是 -45。补码的妙处在于加法器可以直接做减法:45 + (-45) 按位相加恰好得到 1 00000000,舍去溢出的最高位后正好是 0。也因为最高位被当作符号位,8 位有符号数的范围是 -128 到 +127,而不是 0 到 255。
换算负数时务必先确认位宽:同一个 -45,8 位补码是 11010011,16 位补码则是 1111111111010011,两者完全不同。这是进制转换里最容易踩的坑。
小数转换:乘基取整
整数部分「除基取余」,小数部分方向相反——「乘基取整」:每次把小数部分乘以基数,取走整数部分作为一位,再对剩下的纯小数重复,直到小数部分归零或达到所需精度。例如 0.8125 转二进制:0.8125×2=1.625 取 1,0.625×2=1.25 取 1,0.25×2=0.5 取 0,0.5×2=1.0 取 1,得 0.1101。
要特别留意:许多十进制小数在其他进制下是无限循环小数。0.1 的二进制是 0.0001100110011…循环,无法被有限位精确表示,因此浮点数天生带着舍入误差。这也解释了为什么金融类程序宁可把金额存成「分」(整数)也不存小数。
任意进制与生活实例
进制不只活在计算机里:时间计数是六十进制(60 秒进 1 分)、角度也用六十进制的分秒;十二进制藏在「一打」里;短链接服务把自增 ID 转成 62 进制(0-9、a-z、A-Z)来缩短网址;早期的 IP 选项、部分序列号体系用到三十六进制。看懂位权公式后,这些「奇怪进制」都只是符号表不同的普通进位计数制而已。
0 - 32 完整对照表
一张表覆盖二、八、十、十六进制全部常用值,打印或截图放在手边,多数换算场景可以直接查表解决。
| 十进制 | 二进制 | 八进制 | 十六进制 |
|---|---|---|---|
| 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 |
| 17 | 10001 | 21 | 11 |
| 18 | 10010 | 22 | 12 |
| 19 | 10011 | 23 | 13 |
| 20 | 10100 | 24 | 14 |
| 21 | 10101 | 25 | 15 |
| 22 | 10110 | 26 | 16 |
| 23 | 10111 | 27 | 17 |
| 24 | 11000 | 30 | 18 |
| 25 | 11001 | 31 | 19 |
| 26 | 11010 | 32 | 1A |
| 27 | 11011 | 33 | 1B |
| 28 | 11100 | 34 | 1C |
| 29 | 11101 | 35 | 1D |
| 30 | 11110 | 36 | 1E |
| 31 | 11111 | 37 | 1F |
| 32 | 100000 | 40 | 20 |
进制学习常见问题
进制转换的通用公式是什么?
两套互逆的方法:任意进制转十进制用位权展开——每位数字乘以基数的对应次方(从右往左 0 次方起步)后求和;十进制转任意进制用除基取余、余数倒排。二进制与八进制、十六进制之间另有 3 位、4 位分组的捷径。
计算机中负数为什么要用补码表示?
补码让同一套加法器既能做加法也能做减法(减一个数等于加它的补码),省掉了专门的减法电路;同时 0 的表示唯一,不会出现 +0 和 -0 之分。负数补码 = 对应正数按位取反再加 1,最高位是符号位。
36 进制是什么样子的?
36 进制使用 0-9 加 A-Z 共 36 个符号,「满三十六进一」。它能在最少的字符里表达最大的数(两位 36 进制即可覆盖 0-1295),常用于短链接、优惠码、批量序列号等需要紧凑表示大整数的场景。本页顶部换算器支持到 36 进制。
学进制转换有什么高效练习方法?
建议三步走:先把 0-15 对照表背到条件反射;再练「4 位一组」读十六进制和「除 2 取余」写二进制这两个最常用操作;最后用本站各转换页对自己的手算结果做即时校验。每天十分钟,一周左右就能脱离工具心算常见值。