1.已知定点小数X和Y,数值位为5位,试使用变形补码方式计算:X+Y。
其中:X = -0.10001,
Y = -0.11110,
【答】先求X和Y的变形补码:[X]补=[填空1](双符号)
[Y]补 = [填空2](双符号)
[X]补 + [Y]补 = [填空3](双符号) 即X+Y为[填空4]
注意:填空4如果没溢出,给出二进制真值;若溢出,填“正溢/负溢”。
【答案】
先将X与Y转为双符号位:X = 10.10001,Y = 10.11110(注意符号位不要变)
再转为补码:[X]补 = 11.01111,[Y]补 = 11.00010,得前两空答案
[X]补 + [Y]补 直接将两补码求和即可,得 = 10.10001
双符号位的两个数字为10,故为下溢/负溢
2.已知定点小数X和Y,数值位为5位,试使用变形补码方式计算:X-Y。
其中:X=-0.11111,
Y=-0.11001,
【答】先求X和Y的变形补码:
[X]补 = [填空1](双符号)
[-Y]补 = [填空2](双符号)
[X]补 - [Y]补 = [X]补 + [-Y]补 = [填空3](双符号) 即X + Y为[填空4]
注意:填空4如果没溢出,给出二进制真值;若溢出,填“正溢/负溢”。
【答案】
先将X与-Y转变为双符号位:X = 10.11111,-Y = 00.11001
再转为补码:[X]补 = 11.00001,[Y]补 = 00.11001(正数不用变),得前两空答案
两者相加,得[X]补 - [Y]补 = [X]补 + [-Y]补 = 11.11010,符号位两数字相同,未溢出
由于相加结果为补码。要得到真值则需要再将结果进行转化,则真值为:-0.00110
3.已知定点小数:X=+33/64,Y= -61/64,试使用变形补码方式分别计算(要求对运算结果进行溢出检测,若溢出,要求指明正溢/负溢,数值位6位)∶
(1)求X,Y,-Y的变形补码
(2)X + Y;
(3)X - Y。
【答】
(1) X,Y,-Y的变形补码:
[X]补 = [填空1](双符号)
[Y]补 = [填空2](双符号)
[-Y]补 = [填空3](双符号)
【答案】
1/64为2^-6,因此小数点向前移动6位,X的分子部分的33用二进制表示为100001,X = 00.100001 = [X]补
对于Y,61用二进制表示为111101,故Y = -0.111101 = 10.111101,[Y]补 = 11.000011
-Y = 0.111101 = 00.111101,[-Y]补 = 00.111101
【答】
(2)X + Y
[X]补 + [Y]补 = [填空1] 即X + Y为[填空2]
(3X - Y
[X]补 - [Y]补 = [填空3] 即X - Y为[填空4]
【答案】
[X]补 + [Y]补 = 00.100001 + 11.000011 = 11.100100,即X + Y为-0.011100
[X]补 - [Y]补 = 00.100001 + 00.111101 = 01.011110,双符号位为01,故为上溢
4.已知定点整数:X = -17,Y = -30,设数值位为5位。试使用变形补码方式计算:X+Y
[X]补 = [填空1](双符号)
[Y]补 = [填空2](双符号)
[X]补 + [Y]补 = [填空3](双符号) 即X + Y为[填空4]
注意:整数符号位与数值位之间,用逗号分隔。填空4如果没溢出,给出二进制真值;若溢出,填“正溢/负溢”。
【答案】
用双符号位表示:|X| = 17 = 00,10001,X = 10,10001,[X]补 = 11,01111
|Y| = 30 = 00,11110, Y = 10,11110, [Y]补 = 11,00010
[X]补 + [Y]补 = 11,01111 + 11,00010 = 10,10001,双符号位为10,因此为下溢
5.用原码一位乘法计算:x×y。已知:x=-0.11010,y=-0.01011。
【答案】
6.用补码一位乘法计算:x×y。已知:x=0.10011,y=-0.01011。
【答案】
7.设X=+15/32,Y=-13/32,试用带求补器的补码阵列乘法器计算:XxY。
答:
[X]补=[填空1],
[Y]补=[填空2]
符号位: xf⊕yf=[填空3]
算前求补,得:
X’=[填空4],Y' =[填空5]
阵列计算输出得:[填空6],
算后求补输出,得:
[填空7]
即[X×Y]补=[填空8]
因此X×Y=[填空9]
【答案】
8.已知:X = +17.5,Y = -9。试用浮点数运算方法完成计算:X + Y。要求阶码,尾数均采用补码,双符号位;运算过程中,尾数数值位保持6位;舍入规则采用截去法。
【答案】