计算机组成原理复习笔记 | 2.数据的表示与运算

计算机组成原理

二、数据的表示与运算

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CxpkOdij-1587869084838)(配图/D:/库/桌面/计算机组成原理/5.JPG)]

计算机中常用的数据表示格式:定点格式和浮点格式

定点格式容许的数值范围小,但要求的处理硬件简单

浮点格式容许的数值范围大,但要求的处理硬件复杂

数据范围是指一种类型的数据能表示的最大值和最小值

数据精度通常指实数所能表示的有效数字的位数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

BCD码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GTiQm8Vm-1587869084851)(配图/12.JPG)]

1.原码表示法

原码就是数值的真值(绝对值)前面加上一个符号位(正数0、负数1)

0在原码中占了2个编码

负数原码形式上大于正数的原码

优点:简单易懂,与真值转换容易,实现乘除方便

缺点:0的表示有2种,加减法运算复杂

2.补码表示法

补码的定义:[X]补=M+X (Mod M)

正数的补码等于其本身

负数的补码等于模与该数的绝对值之差

负数用补码表示时,可以把减法转化为加法

负数原码转补码:符号位不变,数值位各位取反,末位加一

补码的性质

(1)几个特殊数值的补码表示:

0的补码表示只有一种形式

-1(小数)的补码表示:1.0…0

-2^n(整数)的补码表示: 1.0…0

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.反码表示法

二进制各位数码0变为1,1变为0

在这里插入图片描述
在这里插入图片描述

  • 对于0,有[+0]反和[-0]反之分
  • 纯小数的反码不能表示为-1
  • 纯整数的反码不能表示为-2^n

4.移码表示法

补码表示很难直接判断其真值大小

移码的模比补码的模在指数上少1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

移码中,“0”的表示是唯一的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WZc660ZN-1587869084865)(配图/25.jpg)]

在移码中,符号位与原码、反码、补码相反

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-90Yng5Tq-1587869084866)(配图/26.jpg)]

补码加法

负数用补码表示后,可以和正数一样来处理

当需要减去一个数x时,可以用加上x对应的负数的补码[-x]补来代替

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

补码运算的基本规则

(1)运算的各个操作数均用补码表示,运算结果仍是补码

(2)符号位与数值位一样参加运算

(3)若求和,则将两补码数直接相加,得到两数之和的补码;若求差,则将减数变补(由[y]补求[-y]补),然后与被减数相加,得到两数之差的补码

(4)补码是对确定的模而言,若运算结果超过模(有从符号位上产生的进位),则将模自动丢掉

在这里插入图片描述
在这里插入图片描述

同号两数相加,异号两数相减可能发生溢出

为了判断“溢出”是否发生,可采用两种检测的方法。第一种方法是采用双符号位法

双符号位法又称变形补码,符号位有两位用“00”表示正,“11”表示负

  • 两个符号位都看作数码一样参加运算
  • 两数进行以4为模的加法,即最高符号位上产生的进位要丢掉

如果两个数相加后,其结果的符号位出现“00”和“11”则没有溢出,出现”01“或”10“两种组合时,表示发生溢出(可用异或门实现)

第二种溢出检测方法是采用单符号位法

当最高数值位产生进位而符号位无进位时,产生上溢;当最高有效位无进位而符号位有进位时,产生下溢

符号位与最高数值位都有进位或都无进位则无溢出,若只有一个有进位则发生溢出(可用异或门实现)

基本的二进制加法/减法器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

异或:和0异或->不变,和1异或->取反

M=1时相当于各位取反,末位加一

溢出检测:单符号位法(符号位和最高数值位进位是否相同)

原码一位乘法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

乘除法可以用原码实现

加减运算一定是补码

原码阵列乘法器

在这里插入图片描述
在这里插入图片描述

原码除法运算原理

恢复余数法

除数右移容易出错,余数左移不易出错

不恢复余数法(加减交替法)

浮点数的表示方法

任何一个十进制数N可以写成N=10^E*M

N=R^e*M

R——指数,是一个整数

e——基数,一般为2,8,16

M——尾数,是一个纯小数

E——阶码

IEEE754标准浮点数的表示方法

32位浮点数(单精度):低23位表示尾数 最高位表示符号 中间8位是阶码,采用移码表示指数 E=e+127
x=(-1)^S * (1.M) * 2^(E-127)

64位浮点数(双精度):低52位表示尾数 最高位表示符号 中间11位是阶码,采用移码表示指数 E=e+1023
x=(-1)^S * (1.M) * 2^(E-1023)

当阶码E为全0,且尾数M也为全0时,表示的真值x为零,结合符号位S为0或1,有正零和负零之分

当阶码E为全1,且尾数M也为全0时,表示的浮点数为无穷大,结合符号位S为0或1,有+∞和-∞之分

因此在32位浮点数的表示中,E的取值范围为0000,0001(1)到1111,1110(254),对于规格化浮点数,指数值e则为-126(1-127)到+127(254-127)

浮点数加法、减法运算

尾数右移 小阶向大阶看齐

溢出符号位为01或10——向左破坏了规格化

结果规格化:1/2≤|M|<1,尾数运算结果右移(称为向右规格化),尾数溢出并不一定是整个浮点数无法表示

舍入处理:0舍1入/恒置1法

浮点数的溢出: 负上溢、负下溢、正下溢、正上溢

先行进位思想可以使运算速度大幅度提升

位浮点数的表示中,E的取值范围为0000,0001(1)到1111,1110(254),对于规格化浮点数,指数值e则为-126(1-127)到+127(254-127)

浮点数加法、减法运算

尾数右移 小阶向大阶看齐

溢出符号位为01或10——向左破坏了规格化

结果规格化:1/2≤|M|<1,尾数运算结果右移(称为向右规格化),尾数溢出并不一定是整个浮点数无法表示

舍入处理:0舍1入/恒置1法

浮点数的溢出: 负上溢、负下溢、正下溢、正上溢

发布了79 篇原创文章 · 获赞 100 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/lee1hong/article/details/105764003