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

admin2018-07-17  38

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

选项

答案两个浮点数相加的步骤如下: ①对阶:Ex=10000101,Ey=10000010,则: [Ex一Ey]补=[Ey]+[一Ey]=10000101+01111110=00000011。 Ex大于Ey,所以对y进行对阶。对阶后,y=一0.00100001×26。 ②尾数相加: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×26,所以符号位为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。

解析
转载请注明原文地址:https://kaotiyun.com/show/RyRi777K
0

最新回复(0)