文章目录

  • ​​一、信息的二进制编码​​
  • ​​1. 信息编码的必要性​​
  • ​​2. 信息的二进制编码​​
  • ​​二、数值数据的表示​​
  • ​​1. 进位计数制​​
  • ​​2. 定点与浮点表示​​
  • ​​3. 定点数的编码表示​​
  • ​​(1)原码​​
  • ​​(2)反码​​
  • ​​(3)补码​​
  • ​​(4)移码​​
  • ​​(5)四种定点数编码形式的对比​​

一、信息的二进制编码

1. 信息编码的必要性

  • 计算机内部处理的所有数据都必须是 “数字化编码” 过的数据
  • 现实世界中的信息(声音、文字、图像…)由输入设备转二进制编码表示,输入设备必须有 “离散化” 和 “编码” 两方面功能
  • “计算机层次结构” 在数据表示中的反映
  • 媒体信息被计算机处理的过程

2. 信息的二进制编码

计算机组成原理(2.1)—— 数制和编码_浮点数

二、数值数据的表示
  • 数值数据表示的三要素(确定一个数值数据的值必须先确定这三个要素)
    • 用二进制编码
    • 进位计数制
    • 定、浮点表示

1. 进位计数制

  1. R进制数字系统中,采用R个基本符号(0,1,2,.,R- 1)表示各位上的数字,采用 “逢R进一” 的运算规则,对于每一个数位i,该位上的权为计算机组成原理(2.1)—— 数制和编码_计算机组成原理_02R被称为该数字系统的基数

  2. 在计算机系统中,常用的几种进位记数制有下列几种

    进制

    R

    后缀表示

    基本符号

    二进制

    2

    B

    0,1

    八进制

    8

    O

    0,1,2,3,4,5,6,7

    十六进制

    16

    H

    0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

    十进制

    10

    D

    0,1,2,3,4,5,6,7,8,9

  3. 进制转换

    1. ​R进制 → 十进制​​:按权展开
    2. 计算机组成原理(2.1)—— 数制和编码_计算机组成原理_03


    3. ​十进制 → R进制​​:整数小数分开处理
      1. 整数部分的转换方法是:“除基取余,上右下左”。也就是说,用要转换的十进制整数去除以基数R,将得到的余数作为结果数据中各位的数字,直到余数为0为止。上面的余数(先得到的余数) 作为右边低位上的数位,下面的余数作为左边高位上的数位。
      2. 计算机组成原理(2.1)—— 数制和编码_编码_04


      3. 小数部分的转换方法是:“乘基取整,上左下右”。也就是说,用要转换的十进制小数去乘以基数R,将得到的乘积的整数部分作为结果数据中各位的数字,小数部分继续与基数R相乘。以此类推,直到某步乘积的小数部分为0或已得到希望的位数为止。最后,将上面的整数部分作为左边高位上的数位,下面的整数部分作为右边低位上的数位。
      4. 计算机组成原理(2.1)—— 数制和编码_编码_05


    4. ​二/八/十六进相互转换​
      1. ​八/十六进制 → 二进制​​:每一位数改成等值的3/4位二进制数,整数部分高位0省略;小数部分低位0省略
      2. 计算机组成原理(2.1)—— 数制和编码_定点数_06


      3. ​二进制 → 八/十六进制​​:整数部分低向高每3/4位数用一个等值八/十六进制数替换,不足时高位补0小数部分高向低每3/4位数用一个等值八/十六进制数替换,不足时低位补0
      4. 计算机组成原理(2.1)—— 数制和编码_浮点数_07


2. 定点与浮点表示

  • 计算机中只能表示0/1,不能表示小数点,小数点的处理方法区分定点数和浮点数

  • 定点数可能是小数或整数,只是小数点位置要么在最左要么在最右,定点数是浮点数的组成部分;

  • 定点数和浮点数是计算机中整数和实数表示的基础
  • 计算机组成原理(2.1)—— 数制和编码_编码_08

  • 浮点数中

    • 绝对值最小的非零数是 计算机组成原理(2.1)—— 数制和编码_浮点数_09
    • 绝对值最大的非零数是 计算机组成原理(2.1)—— 数制和编码_编码_10

3. 定点数的编码表示

  • 定点/浮点表示解决了小数点问题
  • 如何数字化符号部分:用0和1表示正负号,通常0代表正号。
  • 数字化的符号部分如何和数值部分一起参与运算:各种把符号位和数值部分一起编码的方法,因为浮点数 = 定点整数 + 定点小数,所以只要考虑定点数的编码表示
  • 定点数编码方法:原码、反码、补码、移码

(1)原码

计算机组成原理(2.1)—— 数制和编码_定点数_11

  • 示例(8位原码表示十进制数)

    • 计算机组成原理(2.1)—— 数制和编码_编码_12
    • 计算机组成原理(2.1)—— 数制和编码_计算机组成原理_13
    • 计算机组成原理(2.1)—— 数制和编码_浮点数_14
    • 计算机组成原理(2.1)—— 数制和编码_编码_15
  • 原码整数和小数的表示范围,关注范围和特殊值
  • 计算机组成原理(2.1)—— 数制和编码_定点数_16

(2)反码

计算机组成原理(2.1)—— 数制和编码_编码_17

  • 示例(8位反码表示二进制数)

    • 计算机组成原理(2.1)—— 数制和编码_数制_18
    • 计算机组成原理(2.1)—— 数制和编码_编码_19
      计算机组成原理(2.1)—— 数制和编码_编码_20
  • 反码整数和小数的表示范围,关注范围和特殊值
  • 计算机组成原理(2.1)—— 数制和编码_定点数_21

  • 无论整数还是小数,原码和反码的表示范围相同,且0都有两种表示方法

(3)补码

  1. 模运算系统

    • 一天中的24小时是一个模运算系统,任意时刻的钟点数都是0到23间的一个整数,这有点类似24进制
      • 今天的第24点,就是明天的0点;
      • 今天的25点,就是明天的凌晨1点;
      • 今天的-5点,就是昨天的19点,我们称19是-5对模24的补码 / -5的模24补码等于19
    • 钟表上的12个刻度也是一个模运算系统。假定时钟现在指向10,要把指针只向6,有两种方法
      • 倒拨4格:10 - 4 = 6
      • 正拨8格:10 + 8 = 18 = 6 (mod 12)
      • 所以模12系统中 -4 = 8 (mod 12),我们称8是-4对模12的补码 / -4的模12补码等于8
    • 根据以上示例,可以得结论:一个模运算系统中
      • 一个负数可以用它的正补数(负数的补码)代替,​一个负数的补码 = 模 - 该负数的绝对值
      • 一个负数和其正补数的绝对值之和 = 模
      • 一个正数的补数即为其本身
      • 可以把减法运算转换为加法运算:A - B = A + B的补码
    1. 计算机也是一个模运算系统
      • 计算机中的存储部件和运算部件都只有有限位,如果运算产生了多于n位的数据,高位舍去,这称为 “溢出”
      • 在计算机中,模是根据数据长度来的,n的模就是1后加n个0
      • 计算机组成原理(2.1)—— 数制和编码_定点数_22


  2. 补码

    1. 编码规则
    2. 计算机组成原理(2.1)—— 数制和编码_浮点数_23

    3. 用途:表示定点整数

    4. 特殊数的补码(假定机器数有n位)
    5. 计算机组成原理(2.1)—— 数制和编码_数制_24

      • 计算机组成原理(2.1)—— 数制和编码_数制_25

      • 计算机组成原理(2.1)—— 数制和编码_浮点数_26

      • 计算机组成原理(2.1)—— 数制和编码_定点数_27

      • 计算机组成原理(2.1)—— 数制和编码_计算机组成原理_28

        注:计算机中并不会出现​​-1.0​​的补码,这里只是想说明:同一个真值在机器中可能有不同的机器数!,另外可以看到,0的补码表示只有一种

    6. 示例

      1. 计算机组成原理(2.1)—— 数制和编码_计算机组成原理_29
      2. 计算机组成原理(2.1)—— 数制和编码_计算机组成原理_30
      3. 计算机组成原理(2.1)—— 数制和编码_计算机组成原理_31
    7. 补码整数和小数的表示范围,关注范围和特殊值
    8. 计算机组成原理(2.1)—— 数制和编码_定点数_32

    9. 补码与真值的简单转换
    10. 计算机组成原理(2.1)—— 数制和编码_浮点数_33

      • 计算机组成原理(2.1)—— 数制和编码_编码_34计算机组成原理(2.1)—— 数制和编码_数制_35连带符号位 “各位取反,末尾加1”
      • 计算机组成原理(2.1)—— 数制和编码_计算机组成原理_36计算机组成原理(2.1)—— 数制和编码_编码_34的互转:符号位/正负性单独判断,数值部分“各位取反,末尾加1”

(4)移码

  • 移码主要用于表示浮点数的阶码只能表示整数
  • 同一个真值的移码和补仅差一个符号位
  • 计算机组成原理(2.1)—— 数制和编码_数制_38


  • 移码的表示范围
  • 计算机组成原理(2.1)—— 数制和编码_编码_39


(5)四种定点数编码形式的对比

  1. 原、反、补码的最高位均为符号位

  2. 真值为正时,原、反、补码形式相同,即符号位用0表示,数值部分同真值

  3. 真值为负时,原、反、补码形式不同,符号位都用1表示,数值部分

    1. 反码是原码的 “每位取反”
    2. 补码是原码的 “每位取反再加1”
  4. 移码和补码仅符号位不同

  5. 关于表示范围:

    1. 原码和反码的整数、小数表示范围相同,且0都有2种表示方法
    2. 补码和移码的整数表示范围相同,且0都只有1种表示方法
  6. 用途

    1. 原码:计算机中用原码小数表示实数(浮点数)尾数部分
    2. 移码:计算机中用移码整数表示实数(浮点数)指数部分
    3. 补码:计算机中用补码表示有符号整数
    4. 反码:不直接使用,一般仅用于原码和补码间的变化过程