gpt4 book ai didi

c++ - float 与定点数 : what are the pros/cons?

转载 作者:IT老高 更新时间:2023-10-28 21:57:40 38 4
gpt4 key购买 nike

浮点类型通过将有效数字和指数分别存储在单独的二进制字中来表示数字,因此它适合 16、32、64 或 128 位。

定点类型用2个字存储数字,一个代表整数部分,另一个代表小数部分,负指数,2^-1、2^-2、2^-3等。

float 更好,因为它们在指数意义上具有更广泛的范围,但如果想要在某个范围内以更高的精度存储数字,例如仅使用 -16 到 16 之间的整数,因此使用更多位来保存数字,则不是超过基数。

在性能方面,哪一个性能最好,或者是否存在一些比另一个更快的情况?

在视频游戏编程中,每个人都使用 float 是因为 FPU 让它更快,还是因为性能下降可以忽略不计,还是他们自己制作固定类型?

为什么 C/C++ 中没有固定类型?

最佳答案

该定义涵盖了非常有限的定点实现子集。

更正确的说法是,在定点中只存储尾数,而指数是先验确定的常数。二进制点不要求落在尾数内,也绝对不要求它落在字边界上。例如,以下都是“定点”:

  • 64 位尾数,按 2-32 缩放(这符合问题中列出的定义)
  • 64 位尾数,按 2-33 缩放(现在整数和小数部分不能用八位字节边界分隔)
  • 32 位尾数,按 24 缩放(现在没有小数部分)
  • 32位尾数,缩放2-40(现在没有整数部分了)

GPU 倾向于使用没有整数部分的定点(通常是 32 位尾数,按 2-32 缩放)。因此,OpenGL 和 Direct3D 等 API 通常使用能够保存这些值的浮点类型。但是,处理整数尾数通常更有效,因此这些 API 也允许以这种方式指定坐标(在纹理空间、颜色空间等中)。

至于您声称 C++ 没有定点类型,我不同意。 C++ 中的所有整数类型都是定点类型。指数通常被假定为零,但这不是必需的,我有相当多的定点 DSP 代码用 C++ 实现。

关于c++ - float 与定点数 : what are the pros/cons?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3692738/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com