如何加减16位浮点半精度数?

时间:2011-10-02 00:07:45

标签: bit-manipulation bit twos-complement

如何加减16位浮点半精度数?

说我需要加或减:

1 10000 0000000000

1 01111 1111100000

2的补充形式。

2 个答案:

答案 0 :(得分:1)

OpenEXR库定义了半精度浮点类。它是C ++,但是本机IEEE754浮点数和一半浮点数之间的代码应该很容易适应。见:半/半。作为开始。

答案 1 :(得分:0)

假设您正在使用类似于IEEE单/双精度的非规范化表示,只需计算sign =( - 1)^ S,尾数为1.M,如果E!= 0,则为0.M,如果E = = 0,指数= E - 2 ^(n-1),对这些自然表示进行操作,并转换回16位格式。

sign1 = -1 尾数1 = 1.0 exponent1 = 1

sign2 = -1 尾数2 = 1.11111 exponent2 = 0

和: sign = -1 尾数= 1.111111 指数= 1

代表:1 10000 1111110000

当然,这假设指数的过度编码。