四种进制对比
| 进制 | 底数 | 字符集 | 代码前缀 | 典型用途 |
|---|---|---|---|---|
| 二进制 | 2 | 0-1 | 0b | 位运算、掩码、底层编程 |
| 八进制 | 8 | 0-7 | 0o 或 0 | Unix文件权限(755、644) |
| 十进制 | 10 | 0-9 | 无 | 人类日常使用 |
| 十六进制 | 16 | 0-9,A-F | 0x | 颜色值、内存地址、位掩码 |
二进制 ↔ 十六进制 快捷转换
这是最常用的快捷方式:每4位二进制对应1位十六进制。
二进制 十六进制
0000 = 0
0001 = 1
0010 = 2
0011 = 3
0100 = 4
0101 = 5
0110 = 6
0111 = 7
1000 = 8
1001 = 9
1010 = A
1011 = B
1100 = C
1101 = D
1110 = E
1111 = F
示例:1101 0110 → 0xD6。记住这个表,进制转换可以心算。
编程中的实际应用
颜色值
#FF5733 = RGB(255, 87, 51)。每两位十六进制数对应一个颜色通道(红/绿/蓝)。
Unix 文件权限
chmod 755 file:7=111(读+写+执行),5=101(读+执行)。第一位7是所有者权限,第二位5是组权限,第三位5是其他人权限。
位掩码
0xFF = 二进制11111111,用来截取低8位。x & 0xFF 的结果是x的低8位,高位被清零。
// 权限位示例
const READ = 0b100; // 4
const WRITE = 0b010; // 2
const EXECUTE = 0b001; // 1
const perm = READ | WRITE; // 0b110 = 6
在线转换步骤
- 打开 进制转换器。
- 输入数值(工具会自动识别前缀
0x/0b/0o)。 - 立即看到二进制、八进制、十进制、十六进制的等价表示。
- 支持批量转换多个数值。
常见问题 FAQ
为什么八进制现在用得少了?
八进制(0-7)每位数只有3位二进制,不能和现代计算机的8位字节对齐。十六进制(每位数4位二进制)更实用。目前八进制主要出现在Unix文件权限里(因为3位二进制正好对应r/w/x三个权限位)。
JavaScript 里怎么表示不同进制?
ES6支持:0xFF(十六进制)、0b1111(二进制)、0o777(八进制)。Number(n).toString(base) 可以把数字转成任意进制的字符串(base 2-36)。