第二章 数据的表示和运算(BOK)

一、数据的表示

1.1 进制转换

1)十进制与二进制

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

2)十进制与二进制

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

3)二进制与十六进制

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

1.2 定点数与浮点数

1)定点数

第二章 数据的表示和运算(BOK)

2)浮点数

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

小数点右移3位,乘以10的-3

  • 核心区别:定点数的小数点位置固定,浮点数的小数点位置浮动
  • 类比说明:浮点数的”浮”体现在小数点可移动的特性,类似科学计数法的表示方式

1.3 定点数的编码表示

第二章 数据的表示和运算(BOK)

1)机器数和真值

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

2)机器数的表示方式 – 原码

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

0有占用两种编码

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

3)机器数的表示方式 – 反码

第二章 数据的表示和运算(BOK)

4)机器数的表示方式 – 补码

第二章 数据的表示和运算(BOK)

5)补码转真值(简便方法)

第二章 数据的表示和运算(BOK)

简便方法

第二章 数据的表示和运算(BOK)

6)补码表示范围

第二章 数据的表示和运算(BOK)

7)原码、补码范围区别

第二章 数据的表示和运算(BOK)
  • 补码与原码表示范围的对比
    • 关键差异:
      • 补码比原码多表示一个负数(如8位补码可表示-128,原码只能到-127)
      • 原因:补码将原码的”-0″编码重新解释为最小负数
    • 表示效率:
      • 补码:2n个编码表示2n个不同数值
      • 原码:2n个编码只能表示2n−1个不同数值(因零占两个编码)
第二章 数据的表示和运算(BOK)

1.4 补码可以实现加减运算的统一

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

1.5 无符号数

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

1.6 移码

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

移码的核心作用是方便比较带符号数的大小,尤其适合表示浮点数的 “阶码”(指数部分)。

简单理解:

移码的本质是给所有数加一个 “偏移量”,把原本有正有负的数 “整体上移”,变成非负数。这样一来,移码的二进制大小顺序和真值的大小顺序完全一致—— 直接比较移码的二进制,就能知道原来的数谁大谁小,不需要额外处理符号位,极大简化了计算机的比较逻辑。

举例(以 4 位二进制为例,偏移量取 8,即 2³):

移码的计算规则:移码 = 真值 + 偏移量(这里是 8)

真值移码(真值 + 8)二进制移码
-4-4 + 8 = 40100
00 + 8 = 81000
33 + 8 = 111011
55 + 8 = 131101

观察规律:

  • 真值越大,移码的二进制数值也越大(1101>1011>1000>0100,对应 5>3>0>-4)。
  • 计算机只需像比较无符号数一样比较移码的二进制,就能直接判断真值的大小,不需要考虑符号位的干扰。

实际用途:

浮点数由 “阶码”(指数)和 “尾数”(有效数字)组成,阶码的大小决定了浮点数的整体大小。移码因为能直接比较大小,被广泛用于表示浮点数的阶码,让计算机快速判断两个浮点数的大小关系(比如比较 1.2×10³ 和 3.4×10²,只需比较阶码 3 和 2 的移码大小)。

1.7 练习

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

1.8 数据的宽度和存储

第二章 数据的表示和运算(BOK)

1.9 大小端存储

大端存储

第二章 数据的表示和运算(BOK)

小端存储

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

二、运算部件

第二章 数据的表示和运算(BOK)

2.1 加法器

2.1.1 全加器

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

2.1.2 串行进行加法器

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
  • 最高位的进位直接丢弃(不是溢出)

缺陷

第二章 数据的表示和运算(BOK)

2.1.3 并行进行加法器

第二章 数据的表示和运算(BOK)

串行进位加法器进位推导

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

并位加法器

第二章 数据的表示和运算(BOK)

2.1.4 带标志加法器(大题重点)

OF 仅对带符号数有效,题目如果问,按表达式推

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

SF

第二章 数据的表示和运算(BOK)

ZF

第二章 数据的表示和运算(BOK)

CF – 仅对无符号数有效

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

2.2 算数逻辑单元ALU

第二章 数据的表示和运算(BOK)

ALUop = 1 加法; ALUop = 0 减法

三、符号扩展与零扩展

第二章 数据的表示和运算(BOK)

3.1 符号扩展的原则

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

3.2 符号扩展的应用

补码转真值

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

溢出判断

第二章 数据的表示和运算(BOK)

没有发生溢出

第二章 数据的表示和运算(BOK)

发生溢出

3.3 零扩展

第二章 数据的表示和运算(BOK)

四、定点数的运算(不是考察重点)

第二章 数据的表示和运算(BOK)

4.1 定点数的移位操作

第二章 数据的表示和运算(BOK)

4.1.1 左移

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

4.1.2 右移

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

算数右移 针对 补码,逻辑右移用于无符号数

4.2 补码的加减运算

4.2.1 补码加减运算法则

第二章 数据的表示和运算(BOK)

4.2.2 补码加减运算电路

第二章 数据的表示和运算(BOK)

[y]补 -> [-y]补

1、全部按位取反

2、末位 + 1

第二章 数据的表示和运算(BOK)
  • 核心组件:
    • 带标志加法器:执行实际加法运算
    • 多路选择器(MUX):选择输入y或y取反
    • 控制信号Sub:决定执行加法(0)或减法(1)
  • 减法实现原理:
    • Sub=1时:MUX输出y取反,同时Cin=1
    • 等效操作:y取反加1得到−y补码
  • 加法实现原理:
    • Sub=0时:MUX直接输出y,Cin=0
    • 等效操作:直接计算x+y
  • 标志位应用:
    • OF:有符号数溢出标志
    • CF:无符号数进位标志
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

该图需要记忆

4.2.3 溢出判别

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

4.3 乘法原理和电路

4.3.1 原码乘法

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

4.3.2 补码乘法

第二章 数据的表示和运算(BOK)

4.4 除法原理与电路

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

五、浮点数与IEEE754

第二章 数据的表示和运算(BOK)

5.1 浮点数

5.1.1 浮点数的表示格式

第二章 数据的表示和运算(BOK)

【注】:基数一般是考察2这种情况

5.1.2 浮点数的规格化

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

正数

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

负数

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
  • 规格化
    • 基数r=2时:
      • 形式:±0.1bb…b×2^E(b为0或1)
      • 关键特征:小数点后第一位必须为1(二进制有效位)
    • 基数r=2^n时:
      • 要求:尾数最高n位不全为0
      • 本质:尾数绝对值必须大于r分之一(如r=4时需>0.25)
    • 原码特性:
      • 尾数用原码表示时,真值范围在(-1,1)之间
      • 因此规格化形式中整数部分只能是0(正数)或符号位(负数)
第二章 数据的表示和运算(BOK)

5.1.3 规格化操作(区别IEEE754)

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

5.1.4 浮点数的加减运算

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

5.1.5 补码表示的尾数

第二章 数据的表示和运算(BOK)

5.1.6 舍入

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

5.2 IEEE754

5.2.1 IEEE754标准 & 表示格式

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

5.2.2 移码

第二章 数据的表示和运算(BOK)

5.2.3 IEEE754浮点数规格化

第二章 数据的表示和运算(BOK)

5.2.4 阶码全0和全1时IEEE754浮点数的解释

第二章 数据的表示和运算(BOK)

5.2.5 小试牛刀

第二章 数据的表示和运算(BOK)
第二章 数据的表示和运算(BOK)

5.3 C语言中浮点数类型

第二章 数据的表示和运算(BOK)

本网站原创文章版权归何大锤的狂飙日记所有。发布者:何大锤,转转请注明出处:何大锤的博客

(1)
何大锤的头像何大锤管理团队

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

2211932694

在线咨询: QQ交谈

邮件:hdcblog1999@163.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
网站建设中ing......