2011年定点数408大题

知识回顾

(1)

真题

2011年定点数408大题_第1张图片

2011年定点数408大题_第2张图片

第一问:无符号数加减

R1装着无符号整型变量x=134=1000 0110(2);

由于y=246=255-9=1111 0110(2)【这样比128+。。逐个算更快】;

把y包括符号位取反再末位+1得到【-y】=0000 1010,

所以【x-y】=【x】+【-y】=1000 0110+0000 1010=(0)1001 0000,括号为加法器的进位,即R5=90H。

同理x+y=R6=1000 0110+1111 0110=(1)0111 1100,R6=7CH。

【注意】无符号的减法见(https://blog.csdn.net/qq_35812205/article/details/108005393,其实下面第三问描述得更规范)

无符号数的减法是用补码的【x-y】补=【x】补+【-y】补运算的);答的是十六进制!!

(2)执行上述程序段后,变量m和k1的值分别为多少?(用十进制表示)

第二问:赋值、机器数的解释

【解析】赋值的过程不改变机器数,即int m=x后,m是对x的机器数用【int型数据的补码解读】为

【补】1000 0110——【原】1111 1010即-111 1010B=-122.(这里计算相反数的十进制可以用128-1-4-1=122

根据第一行对“赋值”的解释,m-n和机器数和x-y的机器数相同,都是1001 0000H——解释为int型(补码表示)为1111 0000B=-111 0000B=-112.

m-n的机器数与x-y的机器数相同

(3)上述程序段涉及有符号整数加减、无符号整数加减运算,这四种运算能否利用同一个加法器辅助电路实现?简述理由。

第三问:有/无符号数的加减

【解析】能,n位加法器实现的是模2^n无符号整数加法运算,

1)对于无符号整数a和b,a+b可以直接用加法器实现;

对于无符号数a-b可用a加b的补数实现,即a-b=a+【-b】补 (mod 2^n)

2)对于有符号整数(补码表示)a和b,【a+b】补=【a】补+【b】补(mod 2^n),

【a-b】补=【a】补+【-b】补(mod 2^n)。

(4)计算机内部如何判断有符号整数加减运算的结果是否发生溢出?上述程序段中,哪些有符号整数运算语句的执行结果会发生溢出?

第四问:溢出判断

【解析】运算结果的最高数位(次高位)的进位和最高位(符号位)的进位相同,则结果不溢出。

无符号int k=m-n即x-y运算为

  1000 0110

+0000 1010

--------------------

10111  1100(符号位和最高数位的进位不同——溢出)。

注意】另外可以根据int 的x=-122,y=-10,在8个字长下,预判x-y是不会溢出,x+y=-132超过8位补码能表示范围(-128~127)。

 

你可能感兴趣的:(计算机组成原理)