跳到主要内容

进制转换怎么算:二进制、八进制、十六进制进制换算全解

从原理讲清二进制八进制十进制十六进制如何互转,再到颜色权限内存地址等编程实战,以及 2 到 36 任意进制的换算方法,配真实输入输出例子。

发布于 作者 李雷
#进制转换 #二进制 #十六进制 #编程 #计算机基础

进制转换怎么算:二进制、八进制、十六进制进制换算全解

刚学编程那会儿,我盯着一行 color: #FF8800 发呆,不明白这串字符凭什么是橙色。后来才搞懂,进制转换是所有计算机表示法背后的共同语言。把这件事讲透,很多看着玄乎的东西就都通了。这篇文章从原理开始,讲到颜色、权限、内存地址这些真实场景,最后说清楚任意进制怎么换算。

进制到底是什么意思

进制就是「逢几进一」。我们日常用十进制,逢十进一,每一位的权重是 10 的幂:个位是 10⁰,十位是 10¹,百位是 10²。二进制逢二进一,只用 0 和 1,权重是 2 的幂。八进制逢八进一,用 0 到 7。十六进制逢十六进一,但十进制只有 0 到 9 十个符号,不够用,于是借了字母补位。

十六进制的完整符号集是这样的:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。其中 A 代表 10,B 代表 11,C 代表 12,D 代表 13,E 代表 14,F 代表 15。记住 0-9 之后接 A-F,十六进制就没有秘密了。

二进制十进制互转的原理

把二进制转十进制,就是把每一位乘以对应的 2 的幂再相加。拿 11111111 举例,从右往左八位分别是 2⁰ 到 2⁷,全是 1,所以等于 128+64+32+16+8+4+2+1 = 255。

反过来,十进制转二进制用「除二取余」:把数不断除以 2,记下每次的余数,最后把余数倒着读。255 除 2 余 1,127 除 2 余 1,一路下来八个余数全是 1,倒读就是 11111111。

一个贯穿始终的真实例子

记住这一组等式,进制感就有了:十进制 255 = 二进制 11111111 = 十六进制 FF。这三个写法指向同一个数。十六进制为什么这么方便?因为 4 个二进制位刚好对应 1 个十六进制位:1111 是 F,11111111 拆成 1111 和 1111,就是 FF。八进制同理,3 个二进制位对应 1 个八进制位。这就是为什么程序员爱用十六进制读二进制,它是二进制的紧凑速记。你可以在进制转换器里输入 255,四个进制字段会同时亮起来,改一个其余三个实时跟着变。

编程里到处都是进制

颜色。网页颜色 #FF8800 其实是三段十六进制:FF 是红色通道 255,88 是绿色 136,00 是蓝色 0,合起来就是橙色。每个通道一个字节,范围正好 0 到 255。想在十六进制色值和 RGB 之间来回换,颜色转换器比手算快。

权限。Linux 的 chmod 755 里每个数字是一个八进制位:7 是 111(读写执行全开),5 是 101(读和执行)。八进制在这里天然好用,因为权限正好三位一组。

内存地址。调试器里看到的地址几乎都是十六进制,比如 0x7FFE0340。用十六进制是因为它和字节边界对齐,两位十六进制刚好一个字节,扫一眼就知道有多少字节。

任意进制与大整数

进制不止常见的那四种,2 到 36 之间任意基数都能换算。超过十进制的位用字母接着排,所以三十六进制能用满 0-9 加 A-Z 全部三十六个符号,常被用来把长数字压成短字符串。

还有个坑要提醒:十六进制 0xFFFFFFFFFFFFFFFF(64 位无符号最大值)超过了 JavaScript 普通数字的安全范围 2⁵³,用 parseInt 解析会算错。真要处理这种大整数,得用支持 BigInt 的工具按位精确转换,别先丢进表格里转一道,那一道就毁了。

小结

进制转换的核心就一句话:换的是写法,不是数本身。二进制贴近硬件,八进制配权限,十六进制配字节和颜色,十进制给人看。把 255 = 11111111 = FF 这组等式刻进脑子,再配一个能实时联动的工具,颜色、掩码、寄存器值这些就都不再是天书了。


Made by Toolora · Updated 2026-06-13