第一章 数制和编码

课程信息

  • 课程:1A003 计算机组织与系统结构(第一部分 数字逻辑)
  • 章节:第一章 数制和编码
  • 讲师:田浩然上传资料(北京大学课程体系)
  • 格式:PowerPoint 97-2003 二进制格式,LibreOffice 转 PDF 后全文提取
  • 页数:约 25 页
  • 状态:done(文字版提取完整)

本章知识体系

本章共五大模块:进位计数制及转换 → 数的编码表示(原码/补码/反码)→ 十进制数的二进制编码(BCD码)→ 字符代码(ASCII码)。


一、进位计数制及转换

进位计数制三要素

  • 基数:数码个数(二进制基数为2,十进制为10,十六进制为16)
  • 位权:每一位的权重 = 基数的幂次
  • 进位规则:逢基数进一

常用进位计数制

进制基数数码位权示例(整数第i位)表示后缀
二进制20, 12^iB
八进制80-78^iO / Q
十进制100-910^iD
十六进制160-9, A-F16^iH

进制转换方法

十进制 → 其他进制:

  • 整数部分:除基取余,逆序排列
  • 小数部分:乘基取整,顺序排列

其他进制 → 十进制:按权展开求和

二进制 ↔ 八进制/十六进制:

  • 三位二进制对应一位八进制(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 个字符

五、本章重点考点速查

  1. 补码定义与计算:给定一个数的真值,求其原码/补码/反码表示
  2. 补码的优势:零唯一 + 减法变加法 + 运算简单
  3. 原码/补码/反码的相互转换:正数三者相同,负数”求反加一”
  4. 同余与模的概念:理解补码的数学基础
  5. BCD码分类:有权/无权、组合/分离
  6. 符号位位置与含义:最高位,0正1负

作业题参考

  1. 写出下列二进制数的原码、补码和反码:
    • 0.1001011, -0.1011010
    • +1100110, -1100110
  2. 数在计算机中的二进制表示形式称为 ______(机器数)
  3. 正数的补码与原码 ______(相同)
  4. 十进制负数 -38 的 8 位二进制补码表示是 ______

章节关联