已知两个实数x=—68,y=—8.25,它们在C语言中定义为float型变量,分别存放在寄存器A和B中。另外,还有两个寄存器C和D。A、B、C、D都是32位的寄存器。请问下列问题(要求用十六进制表示二进制序列):
问答题
寄存器A和B中的内容分别是什么?
【正确答案】正确答案:float型变量在计算机中都被表示成IEEE754单精度格式。X=一68=一(1000100)
2
=一1.0001×2
6
,符号位为1,阶码为127+6=128+5:(1000 0101)
2
,尾数为1.0001,所以小数部分为:000 1000 0000 0000 0000 0000,合起来整个浮点数表示为:1 1000 0101 000 1000 0000 0000 0000 0000,写成十六进制为:C2880000H。 Y=一8.25=一(1000.01)
2
=一1.00001×2
3
,符号位为1,阶码为127+3=128+2=(1000 0010)
2
,尾数为1.00001,所以小数部分为:000 0100 0000 0000 0000 0000,合起来整个浮点数表示为:1 1000 0010 000 0100 0000 0000 0000 0000写成十六进制为C1040000H。 因此,寄存器A和B的内容分别为C2880000H、C1040000H。
【答案解析】
问答题
z和y相加后的结果存放在C寄存器中,寄存器C中的内容是什么?
【正确答案】正确答案:两个浮点数相加的步骤如下: ①对阶:E
x
=10000101,E
y
=10000010,则: [E
x
一E
y
]补=[E
y
]
补
+[一E
y
]
补
=10000101+01111110=00000011。 E
x
大于E
y
,所以对y进行对阶。对阶后,y=一0.00100001×2
6
。 ②尾数相加:X的尾数为一1.000 1000 0000 0000 0000 0000,Y的尾数为一0.001 0000 1000 0000 0000 0000, 用原码加法运算实现,两数符号相同,做加法,结果为一1.001 1000 1000 0000 0000 0000。 即x加y的结果为一1.001 10001×2
6
,所以符号位为1,尾数为:001 1000 1000 0000 0000 0000,阶码为127+6=128+5,即:1000 0101。合起来为:1 1000 0101 001 1000 1000 0000 0000 0000,转换为十六进制形式为:C2988000H。 所以C寄存器中的内容是C2988000H。
【答案解析】
问答题
x和y相减后的结果存放在D寄存器中,寄存器D中的内容是什么?
【正确答案】正确答案:两个浮点数相减的步骤同加法,对阶的结果也一样,只是尾数相减。 尾数相减:X的尾数为一1.000 1000 0000 0000 0000 0000,y的尾数为一0.001 0000 1000 0000 0000 0000。 用原码减法运算实现,两数符号相同,做减法:符号位:取大数的符号,负数,所以为1。数值部分:大数加小数负数的补码:

【答案解析】