问题
问答题
已知两个实数x=-68,y=-8.25,它们在C语言中定义为float型变量,分别存放在寄存器A和B中。另外,还有两个寄存器C和D。A、B、C、D都是32位的寄存器。请问(要求用十六进制表示二进制序列):
x和y相加后的结果存放在C寄存器中,寄存器C中的内容是什么
答案
参考答案:两个浮点数相加的步骤如下:
①对阶:Ex=10000101,Ey=10000010,则:[Ex-Ey]补=[Ex]补-[Ey]补=10000101+01111110=00000011。Ex大于Ey,所以对y进行对阶。对阶后,y=-0.00100001×26。
②尾数相加:x的尾数为-1.00010000000000000000000,y的尾数为-0.00100001000000000000000,用原码加法运算实现,两数符号相同,做加法,结果为-1.00110001000000000000000。即x加y的结果为-1.00110001×26,所以符号位为1,尾数为:00110001000000000000000,阶码为127+6=128+5,即:10000101。合起来为:11000010100110001000000000000000,转换为十六进制形式为:C2988000H。所以C寄存器中的内容是C2988000H。