gpt4 book ai didi

c - 花车和多头

转载 作者:行者123 更新时间:2023-12-02 07:42:36 25 4
gpt4 key购买 nike

我使用 sizeof 检查我的 64 位 amd opteron 机器中 long 和 float 的大小。两者都显示为 4。

当我检查 limits.hfloat.h 的最大 float 和 long 值时,这些是我得到的值:

Max value of Float:340282346638528859811704183484516925440.000000

Max value of long:9223372036854775807

既然它们的大小相同,那么与 long 相比,float 怎么能存储这么大的值呢?

我假设他们对 float 有不同的存储表示。如果是这样,这是否会影响性能:即,使用 long 比使用 float 更快吗?

最佳答案

这是一个权衡。

一个 32 位有符号整数可以表示 -231 到 +231-1 之间的所有整数。

32 位 float 使用指数表示法,可以表达范围更广的数字,但无法表达该范围内的所有数字——甚至不能表达所有整数。它使用一些位表示分数,其余位表示指数。它实际上是 6.023*1023 等符号的二进制等价物,在范围的末端可表示数字之间的距离非常大。

有关更多信息,我会阅读 David Goldberg 撰写的这篇文章“每位计算机科学家应了解的浮点运算知识”:http://web.cse.msu.edu/~cse320/Documents/FloatingPoint.pdf

顺便说一下,在您的平台上,我希望 float 是 32 位的数量,而 long 是 64 位的数量,但这与整体点并不密切相关。

性能在这里很难定义。浮点运算可能会或可能不会比整数运算花费更长的时间,具体取决于运算的性质以及是否为其使用硬件加速。通常,像加法和减法这样的运算在整数中要快得多——乘法和除法就没那么快了。有一次,人们在进行计算时试图耗尽每个周期,将实数表示为“定点”算术并使用整数来表示它们,但这种技巧现在已经很少见了。 (在您使用的 Opteron 上,浮点运算确实是硬件加速的。)

几乎所有运行 C 的平台都有不同的“float”和“double”表示,“double”浮点是 double ,即占用两倍位的表示。除了空间权衡之外,对它们的操作通常有些慢,而且,如果计算精度不需要加倍,那么高度关注性能的人会尝试使用 float 。

关于c - 花车和多头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9527355/

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