第一章 数制和编码
课程信息
- 课程:1A003 计算机组织与系统结构(第一部分 数字逻辑)
- 章节:第一章 数制和编码
- 讲师:田浩然上传资料(北京大学课程体系)
- 格式:PowerPoint 97-2003 二进制格式,LibreOffice 转 PDF 后全文提取
- 页数:约 25 页
- 状态:done(文字版提取完整)
本章知识体系
本章共五大模块:进位计数制及转换 → 数的编码表示(原码/补码/反码)→ 十进制数的二进制编码(BCD码)→ 字符代码(ASCII码)。
一、进位计数制及转换
进位计数制三要素
- 基数:数码个数(二进制基数为2,十进制为10,十六进制为16)
- 位权:每一位的权重 = 基数的幂次
- 进位规则:逢基数进一
常用进位计数制
| 进制 | 基数 | 数码 | 位权示例(整数第i位) | 表示后缀 |
|---|---|---|---|---|
| 二进制 | 2 | 0, 1 | 2^i | B |
| 八进制 | 8 | 0-7 | 8^i | O / Q |
| 十进制 | 10 | 0-9 | 10^i | D |
| 十六进制 | 16 | 0-9, A-F | 16^i | H |
进制转换方法
十进制 → 其他进制:
- 整数部分:除基取余,逆序排列
- 小数部分:乘基取整,顺序排列
其他进制 → 十进制:按权展开求和
二进制 ↔ 八进制/十六进制:
- 三位二进制对应一位八进制(2³ = 8)
- 四位二进制对应一位十六进制(2⁴ = 16)
- 整数部分从右往左分组,小数部分从左往右分组,不足补零
二、数的编码表示
(一)机器数与真值
定义:一个数(连同符号)在机器中加以数码化后的表示形式,称为机器数;原来的数称为机器数的真值。
表示方法:最高位为符号位,0 表示正数,1 表示负数,其余位为数值位。
例1:N1 = +1011001 → 0 1011001 (符号位0 + 数值位)
例2:N2 = -1011001 → 1 1011001 (符号位1 + 数值位)
(二)原码(Sign-Magnitude)
定义(定点小数):
┌ x 当 1 > x ≥ 0
[x]原 = ┤
└ 1 - x 当 0 ≥ x > -1
特点:
- 符号-数值表示法,直观易懂
- 真值 0 有两种表示:[+0]原 = 0.00…0,[-0]原 = 1.00…0
- 加减法运算麻烦(需判断符号和大小)
示例:
x = +0.1011011 → [x]原 = 0.1011011
x = -0.1011011 → [x]原 = 1.1011011
(三)补码(Two’s Complement)
1. 补码的引出——同余与模
日常生活例子:时钟校准
- 7点调到5点:倒拨2小时(7-2=5),或顺拨10小时(7+10=12+5=5)
- 模 M = 12,-2 与 +10 对模 12 同余:-2 ≡ 10 (mod 12)
- -2 的补码(模12)是 10
同余定义:若 a mod M = b mod M,则称 a, b 对模 M 同余,记作 a ≡ b (mod M)。
计算机中的应用:
- 运算受字长限制,有溢出量(即模)
- 补码表示法:把减去一个正数看成加上该负数的补码
- 定点小数补码以 2 为模
2. 补码定义(定点小数)
┌ x 当 1 > x ≥ 0
[x]补 = ┤
└ 2 + x 当 0 ≥ x ≥ -1
示例:
[+0.1011101]补 = 0.1011101
[-0.1011101]补 = 2 + (-0.1011101) = 1.0100011
3. 由原码求补码
- 正数:补码与原码相同
- 负数:符号位不变(仍为1),数值部分按位求反,最低位加 1
- 简称:求反加 1
这一规则同样适用于由补码求原码(对于负数)。
零的唯一性:补码中真值 0 的表示是唯一的
[+0]补 = 0.00...0
[-0]补 = 2 + (-0.00...0) = 10.00...0 = 0.00...0 (模2舍弃高位)
(四)反码(One’s Complement)
用途:常作为原码与补码转换的中间形式,直接用于运算的机器很少见。
定义(定点小数,m 位数值位):
┌ x 当 1 > x ≥ 0
[x]反 = ┤
└ (2 - 2^(-m)) + x 当 0 ≥ x > -1 [mod (2 - 2^(-m))]
转换规则:
- 正数:反码与原码相同
- 负数:符号位不变,数值位按位求反(与补码区别是末位少加1)
零有两种表示:
[+0]反 = 0.00...0
[-0]反 = 1.11...1
示例:
[+0.1101001]反 = 0.1101001
[-0.1101001]反 = 1.0010110
(五)二进制整数的机器数表示
与小数类似,左边添加一位符号位。八位整数示例:
x = +1010101 → [x]原 = 01010101, [x]反 = 01010101, [x]补 = 01010101
x = -1010101 → [x]原 = 11010101, [x]反 = 10101010, [x]补 = 10101011
(六)原码、补码、反码转换关系
符号位+/− ↔ 0/1,数值位不变
真值 ────────────────────────────────→ 原码
↑ │
│ 符号位不变,数值位: │ 符号位不变,数值位:
│ • 正:不变 │ • 正:不变
│ • 负:求反加1 │ • 负:求反
└───────────────────────────────────────┘ ↓
补码 ←────────────────── 反码
(末位加1) (反码→补码)
(七)三种码制比较小结
| 特性 | 原码 | 反码 | 补码 |
|---|---|---|---|
| 正数表示 | 符号位0 + 真值 | 与原码相同 | 与原码相同 |
| 负数表示 | 符号位1 + 真值 | 符号位1 + 数值位取反 | 符号位1 + 数值位取反+1 |
| 零的表示 | 两种(+0/-0) | 两种(+0/-0) | 唯一 |
| 加减法 | 麻烦(需比较大小) | 可做加法但有循环进位 | 最方便(直接加,溢出舍弃) |
| 直观性 | 最直观 | 一般 | 需转换理解 |
关键洞见:补码是现代计算机采用的主流表示方法,核心优势是减法可以用加法实现,无需单独的减法器,且零的表示唯一。
三、十进制数的二进制编码(BCD码)
基本概念
BCD码(Binary Coded Decimal):用几位二进制码来表示一位十进制数。
常见 BCD 码:8421 码、余 3 码、格雷码等。通常说 BCD 码即指 8421 码。
有权码 vs 无权码
- 有权码:各位有固定权值(如 8421 码,各位权分别为 8, 4, 2, 1)
- 无权码:依靠编码规则,各位无权值大小
- 例:格雷码(相邻代码只有一位不同)、五中取二码
组合 BCD 码 vs 分离 BCD 码
- 组合 BCD 码(Packed BCD):每个字节存放两个十进制数字
- 例:(9502)₁₀ → 1001 0101 0000 0010
- 分离 BCD 码(Unpacked BCD):每个字节存放一个十进制数字(低四位,高四位无关)
四、字符代码
- ASCII 码(American Standard Code for Information Interchange)
- 7 位编码,共 128 个字符
- 包含:控制字符(32个)、可打印字符(96个:数字、字母、标点等)
- 扩展 ASCII 码:8 位,256 个字符
五、本章重点考点速查
- 补码定义与计算:给定一个数的真值,求其原码/补码/反码表示
- 补码的优势:零唯一 + 减法变加法 + 运算简单
- 原码/补码/反码的相互转换:正数三者相同,负数”求反加一”
- 同余与模的概念:理解补码的数学基础
- BCD码分类:有权/无权、组合/分离
- 符号位位置与含义:最高位,0正1负
作业题参考
- 写出下列二进制数的原码、补码和反码:
- 0.1001011, -0.1011010
- +1100110, -1100110
- 数在计算机中的二进制表示形式称为 ______(机器数)
- 正数的补码与原码 ______(相同)
- 十进制负数 -38 的 8 位二进制补码表示是 ______
章节关联
- 本章是数字逻辑和计算机组成的数学基础
- 后续章节:逻辑代数的基本原理及应用-第二章-计算机组织与系统结构(逻辑代数)
- 关联课程:0A005_操作系统部分 涉及地址空间和存储管理时会用到数制和编码知识
- 与 《结构化计算机组成》-Structured-Computer-Organization-第6版-Tanenbaum 中数据表示部分互补