408王道计算机组成原理强化——数据的运算及大题

目录

1.大纲要求

1.1.定点数的编码表示

1.2.运算方法和运算电路

1.3.整数的表示和运算

1.4.浮点数的表示和运算

1.6.小结

2.无符号数的加/减

3.加法器电路

3.1.无符号数加法

3.2.无符号数减法

3.3.补码加法/减法

3.4.标志位CF、ZF、OF、SF

3.5.补充

4.乘法溢出

5.精度丢失

6.真题


1.大纲要求

1.1.定点数的编码表示

1.无符号整数的减法实现:减数转换为补码,通过加法的形式实现减法的运算

2.无符号整数的溢出判断:①手算        ②机器实现:CF标志位

3.有符号数:补码、原码(浮点数)

1.2.运算方法和运算电路

1.加法器的原理:两个 n bit的输入,一个n bit的输出

2.ALU

①看懂ALU图示。CU(控制单元)给ALU一个控制信号,告诉ALU将要进行什么操作(加/减/乘/除)

②两个输入一个输出;形成CF、ZF、OF、SF标志位

③不仅执行sub、add、mul等运算指令需要ALU参与,执行其他指令时,ALU也会参与

(1)条件转移指令可以根据ALU进行运算时生成的标志位进行判断是否满足条件

(2)每次执行完指令后,PC都会自动+"1",有的计算机中可能会使用ALU完成此操作

(3)jump指令通过ALU对PC进行加减操作,从而实现指令的往前或者往后

3.补码加/减运算器:

 4.乘除法原理:无符号数、补码以及它们的运算电路

1.3.整数的表示和运算

1.4.浮点数的表示和运算

1.6.小结

1.无符号数

2.有符号数 → 补码

3.定点小数和原码仅在浮点数中用到:考察深度浅

4.运算:加减(深),乘除(浅)

5.溢出:加减、乘除

2.无符号数的加/减

1.加法:从最低位开始,按位相加,并往更高位进位

 2.减法:

①被减数不变,减数全部按位取反,取反后加1

快速方法:从右往左找到第一个1,这个1左边的全部位按位取反

减法化成加法的原因是:加法电路易于实现,造价便宜,减法电路实现困难,造价昂贵

②从最低位开始,按位相加,并往更高位进位(同无符号数加法操作)

3.加法器电路

3.1.无符号数加法

①加法器的左端输入被加数A(1010),右端输入加数B(1000)

②加法 → Sub = 0,即加减法控制信号向多路选择输入0,B通过MUX的0侧输入到加法器中

③加法器进行对1010和1000进行逐位相加 → 1 0010 → 只保留低4bit,最高位丢弃

④OF(虽然对无符号数没有意义,但是仍然会生成):1010的最高位(1)和1000的最高位(1)进位(1)和1010的次高位(0)和1000的次高位(0)进位(0)进行异或 → OF = 1

⑤CF(无符号数通过CF是否为1判断是否产生溢出):最高位进位(即cout输出位,1)和sub输入位(加法,0)进行异或 → CF = 1,1010 + 1000发生进位/借位,即溢出 

3.2.无符号数减法

①加法器的左端输入被加数A(1010),右端输入加数B(1000)

②减法 → Sub = 1

1.加减法控制信号向多路选择输入1,B通过MUX的1侧输入到加法器中:B经过非门,即B按位取反 → 0111(实现按位取反)

2.加法器进行对1010和0111进行逐位相加 → 1 0001

3.加减法控制信号通过cin向加法器输入1 → 1 0010(实现末位加1)只保留低4bit,最高位丢弃

③CF(无符号整数的减法中,减数大于被减数,就会发生借位,即结果为负数,而无符号数只能表示整数,故CF = 1时表示无符号减法溢出):最高位输出位(1)和sub输入位(减法,1)进行异或 → CF = 0,1010 - 1000没有借位/进位,即没有溢出

3.3.补码加法/减法

①实现原理和无符号数的加/减原理一样(ALU在实现运算时,并不区分是实现的原码还是补码的运算)

②是否溢出看CF是否为1:最高位进位和SUB异或(OF对补码加/减无意义)

③SF = 1表示负数,SF = 0表示负数

3.4.标志位CF、ZF、OF、SF

1.OF(无符号数无意义):最高位进位和次高位进位异或

2.SF(无符号数无异议):结果的最高位

3.ZF:结果全0,ZF = 1;结果非全0,ZF = 0

4CF.(有符号数无意义):最高位进位和SUB异或

3.5.补充

1.计算机通过当前指令的不同,即进行的微操作不同,对当前进行有符号数/无符号数的计算进行区分,进而让有符号数的加减进行溢出判断时,检查OF;无符号数的加减进行溢出判断时,检查CF

2.加减乘除出现溢出时,并不一定导致异常(内中断):

①硬件:让硬件自动捕捉异常并且发生异常时直接运行中断处理程序

②软件:在执行加减乘除指令后,加上一条陷入指令,由该陷入指令检查溢出是否发生,并且发生时运行中断处理程序

③溢出无所谓,不进行处理

4.乘法溢出

1.2n位保存结果:nbit * nbit 结果一定能用2n bit表示(999 * 999 = 998 001,即3位 * 3位一定不超过6位),故当使用2n bit保存结果时,不会发生溢出

2.n位保存结果:只保留后nbit

(1)无符号数:当前nbit全为0时,舍弃前nbit不影响结果的真值,故不发生溢出;当前nbit只要有出现1时,舍弃前nbit就会影响结果的真值,故发生溢出

(2)有符号数:当前n+1bit全为0/1,舍弃前nbit不影响结果的真值,故不发生溢出,当前nbit不是全为0/1,舍弃前nbit就会影响结果的真值,故发生溢出

原因是补码的符号扩展:当n位补码最高位为0时,扩展为2nbit,则扩展的nbit为全0;当n位bit最高位为1时,扩展为2nbit,则扩展的nbit全为1;故前n+1bit全0/全1时,舍弃前nbit不影响真值

5.精度丢失

1.浮点数的表示隐含了一个最高位的1,即计算精度位数时,需要尾数位数 + 1

2.被转换数有效位数 > 转换类型的精度:发生精度丢失

INT类型有1位是符号位,故精度为32 - 1 = 31bit

INT类型精度为31bit,float类型精度为23 + 1 = 24bit → 31 > 24 →可能发生丢失

INT类型精度为31bit,double类型精度为52 + 1 = 53bit → 31 < 53 → 不会发生丢失

6.真题

(1)可以通过软件的方式使用n轮循环加法指令、减法指令、移位指令等价实现乘法操作

(2)控制逻辑控制循环的次数,并且发出右移和加法指令

(3)a即用软件方式实现(2n轮),b即用硬件方式实现(n轮),c即(1轮)

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值