考研复习-计算机组成原理-第二章-数据的表示和运算

本文章仅作王道408书上没有的内容的补充

带符号整数的乘法

均使用补码表示乘数和被乘数

示例

一开始先将乘数和辅助位放入

控制逻辑根据Y中的最后两位判断行事逻辑

操作逻辑表如作图所示

第一轮一开始是00,所以什么也不加,让寄存器保持原样

然后右移寄存器,高位补符号位,低位溢出舍弃

cn-1=4-1=3

第二趟

此时我们发现指令是10

对应的操作是-x补

那么如右上所示

p-x补

可以等价为

p+[-x]补

即按位取反+1

得到结果写入乘积寄存器

然后算数右移

第三轮由于是11信号

直接右移即可

第四轮是+补码

1101写入p中

第五轮右移

然后前面补充符号位

此时cn=0,不再有后续

溢出判断

其中cf常用于判断无符号加法,所以对于乘法我们依旧使用of进行判断

也可以直接使用手算的方式,补码范围我们已经知道

那么我们直接人工算出乘积后在范围内进行判断

常见乘法运算电路

可以一次性对两位数进行运算

缩短时钟周期为原来的一半

阵列乘法器

软件逻辑实现乘法

总结

除法电路(难点)

手算无符号整数除法

除法运算电路实例

1.初始时,先将除数和被除数放入对应电路的位置

若被除数不足寄存器位数,则进行零扩展

如图所示

以及初始的异常检查

第一趟处理

注意,,因为商寄存器最终只能够保存n为商,而我们手算的过程中我们可以发现我们会得到n+1位的商,所以我们需要将第一位商进行舍弃。

所以在运算过程中,我们需要对第一位进行一次判断,判断是否为1,如果为1则发生溢出,停止除法运算

为0则继续

而如何上商的规则,我们手算很好判断,那么对于计算机来说,我们判断的标准是,判断R-Y的值是否>=0如果≥那么我们直接上1,代表着被除数此时现在能够上商

如果不等,那么则直接上0

如图所示第一轮时,我们判断0000-0010小于0,则我们直接上0,此时R中存放的是R-Y

并非我们下一个需要进行计算的数,我们需要再进行一次+Y保持原样

除了第一轮之外,其余轮数的处理如上图下方所示的三种,其中左移是必要的

先进行左移

第二轮

然后此时判断R中的值是否>=y

我们发现0001小于y所以

此时末尾的空缺位置上0

第三轮

开始时先进行左移运算

得到如图所示的结果

此时我们判断R-Y是否>=0

发现此时R>=Y

所以此时我们应该上商1

即末尾补1

再将运算结果即0011-除数0010

得到的0001写入寄存器当中

如图所示

第三趟结束

第四轮如图所示

运算完毕之后的值

第五轮

除法运算结束此时cn=0(注意cn依旧=4,只是第一轮不进行cn--)

此时R中保存的就是正确的余数

商寄存器为正确的商

其中我们发现,每一轮运算中我们都需要进行R-Y的运算,将其运算结果放入余数寄存器R中

如果大于0则上商1,并将运算结果保留在R中

如果小于0则上商0,此时R中的R-Y是负数,是错误的,因为我们实际上是减去的0000,那么我们需要将错误减去的Y重新加回去复原R

这种做法叫做恢复余数法。

重点理解

对于做题

如果出题人让我们计算商和余数分别是多少

我们可以先进行十进制的运算

然后把他转化为32位的无符号整数即可

余数和商都是这样

其中关于商溢出的判断也是如此,我们可以先进行十进制的算法

然后再根据商的最大表示范围判断商是否大于范围

因为4位÷4位最多就是4位商,不怕溢出

浮点数

主要主义的是单双精度的浮点数的表示方法

注意阶码的偏置值,用阶码-偏置值即可得到阶码的真值

规格化浮点数及其真值表示范围

当为非IEEE 754标准的浮点数规格化,其本质就代表着尾数的最高位次为一个有效数位,不能再进行移动

比如以2为基数的规格化数

0.1111

这样的数字,其尾数的最高位为1,那么其为有效数位,在这种情况下,你往左移动一位,会溢出,往右移一位,会使得最高位不是有效位

那么这样的数被称为规格化

那么如果以4为基数的规格化数

其阶码加一,那么就代表着尾数需要移动两位才能抹平差距

所以,基数为4的规格化数进行左右规的时候,一次性需要移动两位数字

所以对于基数为4的规格化数

其规格化表现为

0.xx 1010100

xx处不为0,即一次左规会导致溢出,然后一次右规又会导致最高位无效,其尾数部分最高有效位为开头的两位数

若基数为8则是开头前三位不为0即可

十进制表示法如图所示推导

特殊浮点数

非规格化浮点数的表示及其范围

负数只需要添加负号即可

浮点数表示范围总结

错题

答案:D

对阶操作中,浮点数的格式都是相同的,所以不会发生溢出

尾数舍入时,如右图所示,假定25位尾数舍入一个1然后进一,导致一直进位,然后需要右规,所以阶码变大可能上溢

尾数溢出时,我们只需要调整阶码即可

答案:B

这种类型的题目关键在于判断精度的转化是难点

比如int 型数据能够表示31位的数

float只能表示到24位

如图所示,如果int 表示了31位数的1

那么转换为浮点数,其规格化之后尾数部分有30个1此时尾数部分超出所以要舍弃则精度丢失

对于Ⅳ选项他有如下过程,列出两个数的数值大小,我们发现如果要进行计算那么f会进行强制类型转换然后进行对阶运算,其中发现阶码需要变大大约210,那么尾数需要右移210位,而double类型的尾数只能够表示53位所以f相当于后面的都被舍弃变成了0,这种现象叫做大数吃小数

答案:D

解题步骤

A的尾数部分为

x: 00 111 00 11101

y:00 101 00 10100

此时发现y的阶码小于x

我们对y进行右规和阶码扩大

y: 00 111 00 00101

x: 00 111 00 11101

两者相加

得到00 111 01 00010

此时发现尾数部分符号位多出两位进行右规

同时阶码+1

得到 01 000 00 10001

此时我们发现阶码溢出

故选D

答案:D

c语言主要转型的机制如下

答案:B

可以根据下图所示的运算规则进行判断

但同时也可以直接用概念判断

cf表示无符号数是否溢出,所以我们直接将r1和r2进行无符号数相减判断是否溢出即可,r1>r2所以不会溢出cf=0

of代表有符号数是否溢出两个负数相减则肯定不会溢出

答案:A

cf代表无符号数的溢出

所以我们将-20进行无符号数的转换

int型32位二进制数

所以y=

x-y一定溢出无符号整数范围

本章重要记忆点

浮点数补码表示法

浮点数采用补码表示其符号位和尾数首位一定相反

移位运算

算数移位运算:用于移动有符号数,符号位也跟着移动,左移补零,右移补符号位,若移动后符号位发生改变则溢出

逻辑移位运算:直接补零

补码表示范围

对于一个n位补码表示的范围为[-2的n-1次方,2的n-1次方-1]

加减运算器及其CF OF标志位的判断

相关推荐
岑梓铭12 小时前
《考研408数据结构》第三章(3.1 栈)复习笔记
数据结构·笔记·考研·408
丰锋ff13 小时前
2009 年真题配套词汇单词笔记(考研真相)
笔记·学习·考研
丰锋ff20 小时前
2019 年真题配套词汇单词笔记(考研真相)
考研
丰锋ff21 小时前
2020 年真题配套词汇单词笔记(考研真相)
考研
丰锋ff1 天前
2014 年真题配套词汇单词笔记(考研真相)
学习·考研
蒙奇D索大1 天前
【数据结构】数据结构秘籍:如何衡量“查找”的快慢?ASL是关键!
数据结构·笔记·学习·考研
蒙奇D索大1 天前
【数据结构】考研重点掌握:顺序查找算法实现与ASL计算详解
数据结构·笔记·学习·考研·算法·改行学it
岑梓铭2 天前
计算机网络第四章(4)——网络层《IPV6》
服务器·网络·计算机网络·考研·408
丰锋ff2 天前
2006 年真题配套词汇单词笔记(考研真相)
笔记·学习·考研
自我陶醉@3 天前
计算机网络---应用层
网络·计算机网络·考研·学习方法·408·王道