浮动,双打和半浮动

时间:2010-02-15 22:57:41

标签: opengl floating-point double

我想知道如何在浮点数(4个字节),双重(8个字节)和半个浮点数(2个字节,用于OpenGL实现)上组织位。

此外,我如何从一个转换为另一个?

2 个答案:

答案 0 :(得分:3)

对于每种格式,您都有:

  • 1个符号位
  • x指数位产生整数E
  • y尾数(或“有效数字”)位产生分数M

如果符号位为1,则数字为负数,否则为正数。

要获得幅度,你需要(1 + M)* 2 ^(E - k),其中k(称为“指数偏差”)取决于格式。

值得注意的是,符号,指数和尾数的某些组合是“特殊”值,如0,-inf+infNaN

有关细节(x,y和k的值),请参阅维基百科single precision(4字节),double precision(8字节)和half precision(2字节)。

请注意,这些都是由IEEE 754指定的,因此Google搜索可能会为您提供有用的结果。 :)

答案 1 :(得分:1)

HalfSingleDouble

这些页面上的Handy-dandy图表。该库应提供在各种格式之间进行转换的方法。