两个数字A和B以一个字节浮点表示法存储,使用指数的最低有效(最右边)3位。每个数字的两个部分都是2的补码。
如果A和B是01000111和11101000,则A + B与操作数的符号相同(全部为8位):__________
这是我迄今为止所做的工作:
我需要找到C,其中A + B = C.
最右边的三位数是根据问题的指数,所以:
A = 01000 ^ 111 据我所知,在2的赞美中 01000 = 8且111 = -1 因此A = 8 ^ -1
B = 1101 ^ 000,指数0的任何数字都是1,因此B = 1 所以A + B = 8 ^ -1 + 1 = 9/8 现在我需要将9/8转换为5字节2的补码二进制基数,将其提升为3字节2的补码二进制指数。据我所知,该基数的范围是-32到31,指数的范围是-3到2.该范围内的任何组合都不是= 9/8。我不知道我哪里或怎么出错。
答案 0 :(得分:0)
最右边的三个数字是根据问题的指数,所以:A = 01000 ^ 111据我所知,在2的恭维01000 = 8和111 = -1因此A = 8 ^ -1 B = 1101 ^ 000 ,指数0的任何数字都是1
你错了,表示是
A = b01000 * 10^b111 = 8 * 10^-1 = 8 * 0.1 = 0.8
B = b11101 * 10^b000 = -3 * 10^0 = -3 * 1 = -3
当他们说“指数”时,他们指的是数字的* 10^x
的指数,以找出你需要移动小数点的左边或右边多远。
所以A + B = C将是0.8 - 3 = -2.2
。您现在需要将-2.2转换为我将作为练习留给您的符号。
答案 1 :(得分:0)
看起来我们错了,这是事后给出的答案。
请注意,在确保其指数相同之前,您无法以通常的方式添加两个浮点数。 A = 8 * 2 ^ -1 = 4。 B = -3 * 2 ^ 0 = -3。 将A更改为4 * 2 ^ 0( 将第一个数字更改为4 * 2 ^ 0(00100000)。然后你可以添加它们来获得7 * 2 ^ 0 将第一个数字更改为00100000(即001000000)。现在你可以添加两个给予 00100000(= 4 * 2 ^ 0)+11101000(= -3 * 2 ^ 0)= 00001000(= 1 * 2 ^ 0)