吃透四大进制:二进制、八进制、十进制、十六进制(概念 + 实战转换)
计算机世界里最常用的四种进制分别是:
- 二进制 (Binary) → 基数 2
- 八进制 (Octal) → 基数 8
- 十进制 (Decimal) → 基数 10(我们日常使用的)
- 十六进制 (Hexadecimal) → 基数 16
它们本质上都是相同数值的不同表示方式,只是每一位的权重(权值)不同。
1. 四大进制核心对比表
| 进制 | 基数 | 可用数字/符号 | 一位能表示范围 | 常见用途 | 内存/位关系 |
|---|---|---|---|---|---|
| 二进制 | 2 | 0, 1 | 0~1 | 计算机最底层表示 | 1 bit = 1位二进制 |
| 八进制 | 8 | 0~7 | 0~7 | 早期Unix权限、部分汇编、老式系统 | 3位二进制 = 1位八进制 |
| 十进制 | 10 | 0~9 | 0~9 | 人类日常计算 | — |
| 十六进制 | 16 | 0~9 + A~F(A=10, F=15) | 0~15 | 内存地址、颜色代码、字节表示、调试 | 4位二进制 = 1位十六进制 |
最重要的一句话:
二进制是计算机的原生语言,其他进制只是为了方便人类阅读而做的分组表示。
2. 位权(Place Value)快速理解
任意进制数值 = 每一位数字 × (基数^位次) 之和
(位次从右往左从 0 开始)
示例:十进制 369
369 = 3×10² + 6×10¹ + 9×10⁰
= 3×100 + 6×10 + 9×1
3. 互相转换核心方法(最实用总结)
A. 任意进制 → 十进制(最简单统一公式)
规则:每位 × 对应位权,相加
实战例子:
- 二进制 101101
1×2⁵ + 0×2⁴ + 1×2³ + 1×2² + 0×2¹ + 1×2⁰
= 32 + 0 + 8 + 4 + 0 + 1 = 45 - 八进制 73
7×8¹ + 3×8⁰ = 56 + 3 = 59 - 十六进制 2A3
2×16² + 10×16¹ + 3×16⁰ = 512 + 160 + 3 = 675
B. 十进制 → 任意进制(除法取余法)
规则:不断除以目标基数,记录余数(从下往上读)
示例:十进制 45 转二进制
45 ÷ 2 = 22 余 1
22 ÷ 2 = 11 余 0
11 ÷ 2 = 5 余 1
5 ÷ 2 = 2 余 1
2 ÷ 2 = 1 余 0
1 ÷ 2 = 0 余 1
从下往上读 → 101101
C. 二进制 ↔ 八进制 / 十六进制(最高频、最快技巧)
二进制 → 八进制:从右往左每3位一组,不够补0
二进制 → 十六进制:从右往左每4位一组,不够补0
反过来也一样:八进制/十六进制每位拆成3/4位二进制
经典对照表(背下来终生受益)
| 十进制 | 二进制 (4位) | 八进制 (3位) | 十六进制 |
|---|---|---|---|
| 0 | 0000 | 0 | 0 |
| 1 | 0001 | 1 | 1 |
| 2 | 0010 | 2 | 2 |
| … | … | … | … |
| 10 | 1010 | — | A |
| 15 | 1111 | 17 | F |
实战例子:
二进制:11010111001
- 转八进制:从右分组 011 010 111 001 → 3 2 7 1 → 3271₈
- 转十六进制:从右分组 0110 1011 1001 → 6 B 9 → 6B9₁₆
十六进制:1A3F
转二进制:1 → 0001 A → 1010 3 → 0011 F → 1111
→ 0001101000111111(通常省略前导0,写成 1101000111111)
4. 实战转换练习(推荐自己动手)
请把下面数字互相转换(答案在最下面,建议先做再看):
- 二进制 11100101 → 十进制?
- 十进制 255 → 二进制 / 八进制 / 十六进制
- 十六进制 0x2F → 二进制 / 十进制
- 八进制 1357 → 十进制 / 二进制
参考答案:
- 11100101₂ = 229₁₀
- 255₁₀ = 11111111₂ = 377₈ = 0xFF
- 2F₁₆ = 00101111₂ = 47₁₀
- 1357₈ = 1×8³ + 3×8² + 5×8¹ + 7 = 512+192+40+7 = 751₁₀
二进制:001 011 101 111 → 1011101111₂
5. 常见应用场景速查
| 场景 | 最常用进制 | 为什么 |
|---|---|---|
| IP地址(IPv4) | 十进制点分 | 人类可读(192.168.1.1) |
| 内存地址、寄存器 | 十六进制 | 紧凑,4位二进制一组 |
| 颜色代码(#RRGGBB) | 十六进制 | 每两位的范围正好是 00~FF (0~255) |
| 文件权限(Linux chmod) | 八进制 | 3位二进制刚好对应 rwx 三种权限 |
| 位运算、掩码 | 二进制 / 十六 | 方便看每一位状态 |
| 调试、日志、抓包 | 十六进制 | 字节对齐,易读 |
6. 小技巧与速记口诀
- 十六进制口诀:0-9 像十进制,10=A, 11=B, 12=C, 13=D, 14=E, 15=F
- 快速判断大小:看最高位,十六进制 > 八进制 > 二进制(同位数情况下)
- 内存里一个字节 = 8 bit = 2个十六进制位 = 总是写成两位(如 0x0A 而不是 0xA)
掌握了这四种进制的转换思维和分组技巧,你在编程、调试、计算机组成原理、算法面试中遇到进制问题基本就无压力了。
有哪部分想再深入(位运算中的进制应用、负数补码、浮点数表示、进制转换的Python实现等)?或者想要更多练习题?随时告诉我!