1.2.2知识点 · 课时
进制与进制转换
掌握进制概念,熟练进行二进制与十进制的互相转换,了解八进制与十六进制。
为什么计算机用二进制
计算机的核心是晶体管——一种微型开关,只有"通"和"断"两种状态。用 1 表示通、0 表示断,所有数据最终都要变成 0/1。这就是二进制。
什么是进制
进制是计数的方法。我们日常用的是十进制(逢十进一),因为人有十根手指。但进制不止一种:
| 进制 | 基数 | 数字符号 | 特点 |
|---|---|---|---|
| 二进制 | 2 | 0、1 | 计算机使用 |
| 八进制 | 8 | 0 到 7 | 每 3 位二进制一组(简化书写) |
| 十进制 | 10 | 0 到 9 | 人类日常使用 |
| 十六进制 | 16 | 0 到 9、A 到 F | 每 4 位二进制一组(程序开发常用) |
区分不同进制,通常用下标或前缀:
- 下标:(1011)₂ 、(11)₁₀ 、(B)₁₆
- 前缀(编程中):
0b1011(二进制)、0o13(八进制)、0xB(十六进制)
位与字节
- 位(bit):二进制的最小单位,一个 0 或 1
- 字节(Byte):8 个 bit = 1 Byte,是计算机存储的基本单位
- 容量换算:1 KB = 1024 B,1 MB = 1024 KB,1 GB = 1024 MB
二进制与十进制互相转换
一、二进制 → 十进制:按权展开
二进制每一位都有一个"权值",从右往左依次是 2⁰、2¹、2²、2³ …(即 1、2、4、8 …)。
口诀:有 1 的位,把权值加起来。
例 1:把 (1011)₂ 转成十进制
| 位 | 第 3 位 | 第 2 位 | 第 1 位 | 第 0 位 |
|---|---|---|---|---|
| 二进制值 | 1 | 0 | 1 | 1 |
| 权值 | 2³ = 8 | 2² = 4 | 2¹ = 2 | 2⁰ = 1 |
| 计入 | 8 | 0 | 2 | 1 |
结果 = 8 + 0 + 2 + 1 = (11)₁₀
例 2:记住这几个常用的权值,转换就很快:
8 位二进制的权值表(熟记即可快速转换)
128
64
32
16
8
4
2
1
示例 (1011)
0
0
0
0
1
0
1
1
权值 =
27
26
25
24
23
22
21
20
把 = 1 的位权值相加:
8+2+1=11
💡 记忆:从右到左是 1、2、4、8、16、32、64、128 —— 每位翻倍
二、十进制 → 二进制:除二取余
口诀:除以 2 取余数,倒序排列。
例:把 (13)₁₀ 转成二进制
| 步骤 | 除法 | 商 | 余数 |
|---|---|---|---|
| 1 | 13 ÷ 2 | 6 | 1 ← 最低位 |
| 2 | 6 ÷ 2 | 3 | 0 |
| 3 | 3 ÷ 2 | 1 | 1 |
| 4 | 1 ÷ 2 | 0 | 1 ← 最高位 |
商为 0 时停止,余数从下往上读:(1101)₂
验证:8 + 4 + 0 + 1 = 13 ✓
八进制与十六进制简介
二进制太长(一个字节就要写 8 位 0/1),为简化书写,引入了八进制和十六进制。
八进制(Octal)
- 基数 8,数字 0 到 7
- 每 3 位二进制对应 1 位八进制(因为 2³ = 8)
| 二进制 | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
|---|---|---|---|---|---|---|---|---|
| 八进制 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
例:(101011)₂ = (53)₈ 分组:101 011 → 5 3
十六进制(Hexadecimal)
- 基数 16,数字 0 到 9、A 到 F(其中 A=10,B=11,C=12,D=13,E=14,F=15)
- 每 4 位二进制对应 1 位十六进制(因为 2⁴ = 16)
- 程序开发中最常用,如颜色
#FF5733、内存地址0x7FFE
| 二进制 | 0000 | 0001 | … | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
|---|---|---|---|---|---|---|---|---|---|---|
| 十六进制 | 0 | 1 | … | 9 | A | B | C | D | E | F |
例:(1110 0100)₂ = (E4)₁₆ 分组:1110 0100 → E 4
三种进制对照
| 十进制 | 二进制 | 八进制 | 十六进制 |
|---|---|---|---|
| 8 | 1000 | 10 | 8 |
| 15 | 1111 | 17 | F |
| 16 | 10000 | 20 | 10 |
| 255 | 11111111 | 377 | FF |
记忆技巧:八进制对应 3 位一组,十六进制对应 4 位一组。这就是为什么程序员爱用十六进制——一个字节正好是 2 位十六进制(8 位二进制)。
📱 项目案例·进制感知
- 打开 Windows 计算器,切换到「程序员模式」,输入 13,观察 BIN/OCT/HEX/DEC 四种进制同步显示
- 网页颜色
#FFFFFF是白色 → FF = 255,即红绿蓝各通道都是最大值 - 用 Python 试(下章会学):
bin(13)→'0b1101',hex(255)→'0xff'
🤔 思考
- 一个字节(8 位)能表示的最大十进制数是多少?对应十六进制是什么?
- 为什么 IPv4 地址
192.168.1.1的每个数字都不超过 255? - 颜色
#1A2B3C中,'1A' 对应的十进制是多少?
📝 知识小结
- 二进制是计算机的计数方式(晶体管开关)
- 二→十:按权展开,有 1 的位权值相加
- 十→二:除二取余,倒序排列
- 八进制每 3 位一组,十六进制每 4 位一组(程序员常用)
- 1 字节 = 8 位,范围 0
255,对应 2 位十六进制(00FF)