人类使用十进制(基数10)源于人类天生有十根手指;而计算机使用二进制(基数2)是因为晶体管的物理状态只有通电(开)和断电(关)两种。理解数制基数对软件开发、网页色彩处理(CSS HEX)和计算机底层架构至关重要。
四种常见的数制基数
| 基数 | 名称 | 字符集 | 主要应用场景 |
|---|---|---|---|
| 10 | 十进制 (Decimal) | 0–9 | 日常生活与数学运算 |
| 2 | 二进制 (Binary) | 0–1 | 计算机硬件、门电路逻辑 |
| 8 | 八进制 (Octal) | 0–7 | Unix 系统文件权限、紧凑二进制 |
| 16 | 十六进制 (Hexadecimal) | 0–9, A–F | 内存地址显示、CSS 颜色代码 |
二进制的运行机制
二进制仅由 0 和 1 构成。每一个数位代表 2 的幂次方:1, 2, 4, 8, 16, 32, 64, 128。二进制数字 11111111 转换为十进制为 255(即 128+64+32+16+8+4+2+1)。
计算示例: 将十进制数 255 转换为二进制。使用短除法除以 2 并自下而上记录余数:
- 255 ÷ 2 = 127 余 1
- 127 ÷ 2 = 63 余 1
- 63 ÷ 2 = 31 余 1
- 31 ÷ 2 = 15 余 1
- 15 ÷ 2 = 7 余 1
- 7 ÷ 2 = 3 余 1
- 3 ÷ 2 = 1 余 1
- 1 ÷ 2 = 0 余 1
最终二进制结果为:11111111。可使用 base converter 快速核对。
生活中的十六进制:以网页颜色为例
HTML 颜色代码采用十六进制:例如 #FF5733 表示红色通道为 FF(255),绿色通道为 57(87),蓝色通道为 33(51)。一个十六进制字符恰好对齐 4 个二进制位(半字节),因此一个标准字节(0–255)能工整地压缩为两位十六进制字符(00–FF)。
程序员为什么偏好十六进制
相比冗长的 0 和 1 字符串,十六进制表达非常精炼,且与现代计算机的字节对齐结构完美契合。
常见问题
程序员为何大量使用十六进制? 因为 1 个十六进制位精准对应 4 个二进制位,比冗长的二进制串易读得多。
编程中的 0x 前缀是什么含义? 0x 代表紧随其后的数字属于十六进制表示,例如 0xFF 对应十进制数值 255。
如何快速换算二进制? 从右向左每 4 位划分为一组直接转为对应十六进制字符。关于 2 的幂次运算请参阅 exponents explained。