Opengl 浮动、双浮动和半浮动

Opengl 浮动、双浮动和半浮动,opengl,floating-point,double,Opengl,Floating Point,Double,我想知道如何在浮点(4字节)、双浮点(8字节)和半浮点(2字节,用于OpenGL实现)上组织位 此外,如何从一个转换到另一个? 在那些页面上有很多漂亮的图表。库应提供在各种格式之间转换的方法。基本上,对于每种格式,您都有: 1符号位 产生整数E的x指数位 产生小数M的y尾数(或“有效位”)位 如果符号位为1,则数字为负,否则为正 为了得到震级,需要取(1+M)*2^(E-k),其中k(称为“指数偏差”)取决于格式 值得注意的是,符号、指数和尾数的某些组合是“特殊”值,如0、-inf、+inf

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

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


在那些页面上有很多漂亮的图表。库应提供在各种格式之间转换的方法。

基本上,对于每种格式,您都有:

  • 1符号位
  • 产生整数E的x指数位
  • 产生小数M的y尾数(或“有效位”)位
如果符号位为1,则数字为负,否则为正

为了得到震级,需要取(1+M)*2^(E-k),其中k(称为“指数偏差”)取决于格式

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

有关详细信息(x、y和k的值),请参阅Wikipedia的(4字节)、(8字节)和(2字节)


请注意,这些都是由指定的,所以谷歌搜索可能会给您提供有用的结果。:)

GPU可能不完全符合IEEE 754(例如,它们经常忽略对非规范化的支持)