gpt4 book ai didi

c - IEEE 754 和浮点精度

转载 作者:太空宇宙 更新时间:2023-11-04 05:19:32 28 4
gpt4 key购买 nike

32 位或 64 位 CPU 在 IEEE 754 提供的精度方面有什么不同吗?

我的意思是在用 C 编程时,floatdoublelong double 的大小在 32 位或 64 位 CPU 之间是否不同.

最佳答案

在大多数使用 IEEE-754 的架构中,floatdouble 是精确的 32 位和 64 位类型,分别对应于单精度和 double 。因此,无论您使用的是 32 位还是 64 位计算机,精度都是一样的。异常(exception)情况是一些带有不符合标准的 C 编译器的微 Controller ,其中 doublefloat 相同并且包含 32 位

OTOH long double 支持因系统而异。在 x86 上,大多数实现将利用硬件 80-bit extended precision类型(通常填充到 12 或 16 字节以保持对齐),MSVC 除外,其中 long double is just an alias for double .在其他架构上,long double 通常被实现为

  1. double相同的类型,或者
  2. 128 位 IEEE 754-2008 quadruple precision , 或
  3. 128 位 double-double

虽然与 double 相比,第二种方式显着增加了范围和精度,但由于缺乏硬件支持,它通常也显着变慢

double-double 方法产生一个范围相同但精度是 double 两倍的类型,具有硬件 double 的优势> 支持,即您不需要像四倍精度那样完全在软件中实现。但是它不符合 IEEE-754

如果您在 上做大量数学运算或 ,迁移到 64 位会受益,因为寄存器数量增加,默认情况下 SSE2/Neon 可用...与 32 位版本相比,这提高了性能,不像大多数其他架构,64 位程序通常运行速度较慢,因为更大的指针。

关于c - IEEE 754 和浮点精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17839616/

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