如何加减16位浮点半精度数?
说我需要加或减:
1 10000 0000000000
1 01111 1111100000
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
当然,这假设指数的过度编码。