我遇到了这个问题,我必须解决我必须乘以浮点数(16位)的问题,但我无法对其进行双重检查。非常感谢任何帮助。
浮点A:0 11000 0111000000 浮点B:0 11010 1011000000
我计算指数:
答:24-15 = 9 B:26-15 = 11
计算尾数(a& b):
(2 ^ 9 * b)*(2 ^ 11 * b)= 2 ^ 9 + 11 *(a * b)+ 2 ^ 20 *(a * b)
溢出,所以我将A的指数增加为B(11)。
然后我根据计算转移A的尾数:
1.0111> 0.10111> 0.010111。
然后我乘以得到尾数。
0.010111
* 1.101100
0000000
0000000
0010111
0010111
0000000
0010111
0010111_____
0.100110110100
我再次转移。
0.100110110100< 1.00110110100
将指数减1,所以它是10.
符号为0,所以它是正数。
答案:0 01010 00110110100。
这是对的吗?
提前致谢!
答案 0 :(得分:0)
看起来像binary16
是否正确?:不。
两个“尾数”或分数都需要包含隐含的位,因为它不是最小指数。因此.1011000000
变为1.1011000000
。
而是1.01 1100 0000
* 1.10 1100 0000
= 10.0110 1101 0000 0000 0000
除了四舍五入之外,指数的变化是乘法后需要考虑的因素。
将产品1.0011 0110 1000 0000 0000 0
和+1右移至无偏指数9 + 11 + 1 - > 21。
将产品舍入到10个分数位
1.0011 0110 1000 0000 0000 0
1.0011 0110 10
重建结果
符号0 ^ 0 = 0
偏差指数21 + 15 = 36 = 100100
,溢出。 @Yves Daoust
分数= 0011 0110 10
。
溢出通常设置为INF 0 11111 0000000000 = infinity
还没有加倍检查我的工作。
答案 1 :(得分:0)
我看到两个问题: