CG中的定点数据类型整数精度范围(12位)

时间:2013-10-04 08:20:22

标签: integer opencl gpu nvidia type-conversion

wiki文章目前对半精度浮点整数范围(16位)有一个非常清晰的描述:

0到2048之间的整数可以准确表示..... 2049年到4096年之间的整数轮到2的倍数(偶数)..... 4097和8192之间的整数轮到4的倍数..... 8193和16384之间的整数轮到8的倍数..... 16385和32768之间的整数轮到16的倍数..... 32769和65536之间的整数舍入到32的倍数..... 等于或大于65520的整数四舍五入为"无穷大" ......

但是,对于定点整数,我无法在网上找到有关整数范围的实用信息,它可以表示精确到32的整数? 64?

它表示半精度,0 01111 0000000001 = 1 + 2-10 = 1.0009765625(1之后的下一个最小浮点数)

有人甚至可以说固定点数据类型的等效小数? ESP。在CG代码中。

谢谢!

1 个答案:

答案 0 :(得分:2)

没有单一的定点值实现,并且可以表示的整数范围对于每个实现都是不同的。对于12位带符号定点表示,实现者可以选择不使用这些位来表示数字的整数部分,并使用11位作为小数部分。在那种情况下,范围是(大约)-1到+1。另一方面,使用所有11位来表示整数部分并且没有任何位来表示小数部分仍然是有效的定点数。对于这种情况,范围是\ $ - 2 ^ {11} \ $到\ $ 2 ^ {11} -1 \ $。因此,对于12位有符号数,用于表示整数的位数可以是0到11之间的任何值。

此外,给定函数或代码块中的所有变量都不一定具有相同的定点格式。即使字长是固定的,不同的变量也可能具有用于表示整数部分的不同位数。