问题 问答题

已知两个实数x=-68,y=-8.25,它们在C语言中定义为float型变量,分别存放在寄存器A和B中。另外,还有两个寄存器C和D。A、B、C、D都是32位的寄存器。
请回答下列问题(要求刚十六进制表示二进制序列):
(1)寄存器A和B的内容分别是什么
(2)x和y相加后的结果存放在c寄存器中,寄存器C中的内容是什么
(3)x和y相减后的结果存放在D寄存器中,寄存器D中的内容是什么

答案

参考答案:[解答] (1)x=-1.0001×26,符号位=1,阶码为127+6=133=(10000101)2,尾数为1.0001,所以寄存器A的内容为1 10000101 00010000000000000000000,写出十六进制为C2880000H。
y=-1.00001×23,符号位=1,阶码为127+3=130=(10000010)2,尾数为1.00001,所以寄存器B的内容为1 10000010 00001000000000000000000,写出十六进制为C1040000H。
(2)两浮点数相加,首先对阶,小阶向大阶看齐,然后尾数相加,结果规格化。x和y相加后的结果为-1.0011001×26。其中:符号位=1,阶码为127+6=133=(10000101)2,尾数为1.00110001,所以存放结果的寄存器C的内容为1 10000101 00110001000000000000000,写出十六进制为C2988000H。
(3)两浮点数相减的步骤与相加相同,只是改为尾数相减。x和y相减后的结果为-0.11101111×26=-1.1101111×25,其中:符号位=1,阶码为127+5=132=(10000100)2,尾数为1.1101111,所以存放结果的寄存器D的内容为1 100001001101111000000000000000,写出十六进制为C26F0000H。

解析: float型变量在计算机中被表示为IEEE754单精度浮点数。x=-68=-(1000100)2=-1.0001×26,y=-8.25=-(1000.01)2=-1.00001×23

选择题
单项选择题