问答题 已知两个实数x=-68,y=-8.25,它们在C语言中定义为float型变量,分别存放在寄存器A和B中。另外,还有两个寄存器C和D。A、B、C、D都是32位的寄存器。请问(要求用十六进制表示二进制序列):
问答题 寄存器A和B中的内容分别是什么?
【正确答案】
【答案解析】float型变量在计算机中都被表示成IEEE 754单精度格式。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。
问答题 x和y相加后的结果存放在C寄存器中,寄存器C中的内容是什么?
【正确答案】
【答案解析】两个浮点数相加的步骤如下。
①对阶:E x =10000101,E y =10000010,则:
[E x -E y ] =[E x ] +[-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 1000 1×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;数值部分:大数加小数负数的补码: