gpt4 book ai didi

floating-point - 究竟定点比浮点更准确的地方在哪里

转载 作者:行者123 更新时间:2023-12-04 14:19:32 24 4
gpt4 key购买 nike

我(认为)我理解二进制小数的定点和浮点表示。但是,我经常看到定点被描述为范围更小更准确,而浮点被描述为范围更大却不太准确。现在,如果我理解正确的话, float 的不准确性源于它不能代表 0.1 的事实,因此许多其他实数 = 我认为定点数有同样的问题,所以它如何被描述为更“准确”。如果我没记错的话,冯诺依曼似乎也支持这个想法,并说我们不应该使用 float 而是固定的,但为什么?

最佳答案

当使用 32 位表示 float 时,通常将它们分成 1 位用于对符号进行编码,8 位用于对指数进行编码,23 位用于对尾数进行基本编码。由于对指数的一些特殊处理,完整的有效数有 24 位。在这种格式中, float 的分辨率是 223 中的 1 部分,也就是说,改变低位会将表示值改变 2−23 倍高位的值。

当使用 32 位进行定点表示时,高位通常用于表示符号,因此最高值位次高,表示 230 的值低位。因此,使用这种格式,定点数的分辨率为 230 中的 1。

因此,使用相同的位数,定点比浮点具有更高的分辨率。即使对于哪些部分使用多少位的其他选择, float 也需要使用一些位作为指数,而定点数使用零,因此定点数总是比 float 具有更好的分辨率。

float 提供动态范围,这意味着它可以通过在计算过程中改变指数来处理大数或小数。定点只有静态范围——它可以表示大数或小数,但你在设计代码时必须选择范围。 (在某种程度上,这可以被精细化,例如通过为输入值选择一个小范围,然后随着值被加在一起以形成越来越大的总和或其他结果而增加范围。但是,每个特定计算的比例必须在设计时选择。)如果您需要更高的分辨率并且不需要动态范围,则使用定点。如果您需要动态范围而不需要更高的分辨率,则使用 float 。如果两者都需要,请使用更多位。

请注意,固定比例意味着定点有时不如浮点准确。 float 调整其比例以将前导数字移动到高位,直到其指数范围的限制。因此,它在上述格式中将分辨率保持在 223 中的 1 左右。但是不动点与设计时选择的比例有关。如果它需要表示一个大小落在定点格式的第 2 位的数字,那么它对该数字的分辨率仅为 22 中的 1 左右。

关于floating-point - 究竟定点比浮点更准确的地方在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56369588/

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