2

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

假设我需要加减:

1 10000 0000000000

1 01111 1111100000

2 的补码形式。

4

2 回答 2

1

OpenEXR库定义了一个半精度浮点类。它是 C++,但在本地 IEEE754 浮点数和半数之间转换的代码应该很容易适应。请参阅:Half/half.h作为开始。

于 2011-10-02T00:28:33.550 回答
0

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

符号 1 = -1 尾数 1 = 1.0 指数 1 = 1

符号2 = -1 尾数2 = 1.11111 指数2 = 0

总和:符号 = -1 尾数 = 1.111111 指数 = 1

代表:1 10000 1111110000

自然地,这假设了指数的过度编码。

于 2011-10-02T00:42:52.610 回答