每次敲下 chmod 755,给按钮写 background: #FF5733,或在权限判断里甩一行 flags & 0x0F,你做的全是进制运算。二进制、十六进制、八进制不是算法课考完就清空的“抽象理论”——那是操作系统、CPU、网络栈的原生语言。读得懂它,写出的代码更干净,定位 bug 更快,面试也不露怯。

Stack Overflow 开发者调查持续把“位操作和进制流利度”标成高级工程师与中级的核心区分项,尤其针对系统编程、嵌入式和安全性。可真相是,就算你天天写网页、做 App,这些活也比你想象中多得多:调试器的内存地址清一色十六进制,子网掩码全看二进制,文件权限靠八进制撑着,CSS 颜色、图像处理、图形 API 用的还是十六进制,就连功能开关、访问控制位域、配置掩码,脱掉外衣全是二进制运算。线上出了权限 bug 或者位操作符用反了,吃透进制就是最快挖到根儿的路。

开发者甩不开的四个进制:
二进制(基数为 2)—— 硬件原生语,全是 0 和 1。
八进制(基数为 8)—— Unix 文件权限的幕后黑手。
十进制(基数为 10)—— 人看得舒服的日常算术。
十六进制(基数为 16)—— 二进制紧凑版,内存地址、颜色值、编码里到处都是。

二进制数 10110101 转十进制怎么算?1×128 + 0×64 + 1×32 + 1×16 + 0×8 + 1×4 + 0×2 + 1×1 = 181。八位一组就是一个字节,能塞下 256 个不同值(0 到 255),这就是为什么 RGB 每个通道上限卡在 255、一个字节刚好装下。32 位整数用掉四个字节,无符号范围能到约 43 亿;现代系统走 64 位字长,能表示的数字飙过 1800 京。你在 C 里声明 int,或在 JavaScript 写个 number(背后是 IEEE 754 双精度浮点),全被塞进一个固定宽度的二进制格式里——懂了这个,才明白为什么 JavaScript 的 Number.MAX_SAFE_INTEGER 刚好是 9007199254740991。

补码和位运算同样绕不开。负数的二进制表示、比特翻转、与或非异或,都不是练习题。权限掩码 & 0x0F 是在筛低四位,左移右移做快速乘除,二进制位旗标省下连串布尔值。每一条位操作指令,CPU 都给足了硬件加速,你用上了,执行效率就快一拍。

把这些例子在 WOWHOW 的免费进制转换工具里跑一遍——无需注册,二进制、八进制、十进制、十六进制之间即时互转。你在生产代码里碰到各种进制混搭时,能随手验算就是省心。