中央处理器习题存档

Posted on 2022-06-04 11:37  Capterlliar  阅读(78)  评论(0编辑  收藏  举报

第六章  计算机的运算方法

1.前情提要

真值为正,原码补码反码相同

真值为负,符号位不变,数值部分补码求反加一,反码求反

移码:补码符号位求反

关于0:原码和反码正负零不等,补码和移码正负零相等

  •  例1:机器字长16位,求原码补码反码无符号数表示范围

    解:无符号数:0 ~ 216-1  原码、反码:-215-1 ~ 0,0 ~ 215-1  反码:-215~215-1

2.小数浮点表示

阶符  阶码数值部分  |  数符  尾数数值部分

      小数点位置                  数是多少

阶码m位,尾数n位,数的表达通式N=S×r j

规格化:尾数没有前导0

  • 例1:8位阶码,24位尾数,基值为2,求原码和补码规格化下表示范围

原码:

最大正数:0,1111111;0,111...1

最小正数:1,1111111;0,100...0

最小负数:0,1111111;1,111...1

最大负数:1,1111111;1,100...0

补码:

最大正数:0,1111111;0,111...1

最小正数:1,0000000;0,100...0

最小负数:0,1111111;1,100...0

最大负数:1,0000000;1,011...1

3.定点运算

移位:

算术移位符号位不变,逻辑移位符号位跟着一起移

整数移位补0,负数原码补0,反码补1,补码左移补0,右移补1

加减法:

用补码算,位数算得多出来扔掉前一位

溢出判断:

  一位符号位:两数正负号不同不会溢出,两数符号位相同结果符号位与其不同为溢出;

  两位符号位:两位数字不一样为溢出

乘法:

原码乘法:符号位和数值部分分开算,可分为一位乘和两位乘。

一位乘是每次只看一位,加完被乘数的0倍或1倍后右移1位,作n次加法,n次移位,逻辑右移;

两位乘看两位,分别处理00,01,10,11的情况后右移2位,作n/2+1次加法,n/2次移位,算术右移。

补码乘法:Booth算法,n次移位,最多n+1次加法

4.浮点运算

加减法

1)对阶

2)尾数运算

3)左规/右规

原码规格化小数部分最高位为1,补码小数部分最高位与符号位相反。

右规:结果溢出

4)判断溢出

乘法

1)阶码运算,x*y,x阶码用移码,y阶码用补码

5.并行加法器和进位链

第七章  指令系统

比上一章阳间多了

1.指令格式

操作码+地址码

例1:指令字长16位,地址码6位,求:

1)零地址指令M种,一地址指令N种,则二地址最多几种?

二地址操作码16-6*2=4位,24=16,16-M-N

2)扩展操作码(操作码位数随地址数减少而增加)下二地址最多几种?

二地址操作码16-6*2=4位,24=16,去掉1种表示一地址,还剩15种

3)扩展操作码下二地址P条,零地址Q条,一地址最多几种?

二地址、一地址、零地址操作码分别为4、10、16位,二地址操作码每减少一个,就可以多构成26条一地址,假设一地址R条,一地址最多(24-P)*26条,零地址最多[(24-P)*26-R]*26条,上式值为Q,反解R即可。