I(认为)我理解二进制中小数的定点和浮点表示形式。但是,我经常看到定点在较小范围内更准确,而浮点在较大范围内更不准确。现在,如果我正确理解的话,浮点数的不准确性是由于它不能表示0.1,因此还有许多其他实数=我认为定点数存在相同的问题,因此如何将其描述为更“准确”。如果我没记错的话,冯·诺伊曼(Von Neumann)似乎也拥护这个想法,他说我们不应该使用浮点数,而应该固定下来,但是为什么?
答案 0 :(得分:0)
当使用32位浮点表示形式时,通常将它们划分为1位以对符号进行编码,8位以对指数进行编码以及23位用于有效数的主要编码。由于对指数进行了一些特殊处理,因此有效位数为24位。在这种格式中,浮点数的分辨率在2 23 中是1的一部分,在某种意义上,更改低位会将表示值更改为2 −23 倍。高位的值。
当使用32位定点表示时,高位通常用于指示符号,因此最高值位是第二高位,它表示2的倍数 30 低位。因此,使用这种格式,定点数的分辨率为2 30 中的1分。
因此,使用相同的位数,定点比浮点具有更高的分辨率。即使可以选择使用哪个部分使用多少位,浮点数也需要使用一些位作为指数,而定点数则使用零,因此定点数始终比浮点数具有更好的分辨率。
浮点提供动态范围,这意味着它可以通过在计算中更改指数来处理大数或小数。定点仅具有静态范围-它可以表示大数或小数,但是在设计代码时必须选择范围。 (在某种程度上,这可以很好地解决,例如通过为输入值选择一个较小的范围,然后随着将值相加以形成越来越大的总和或其他结果而增大范围。但是,每个特定计算的标度必须(在设计时选择)。如果需要更高的分辨率并且不需要动态范围,请使用定点。如果需要动态范围并且不需要更高的分辨率,则使用浮点数。如果两者都需要,请使用更多位。
请注意,定标表示定点有时会不如浮点准确。浮点调整其比例以将前导数字移至最高位置,直至达到其指数范围的极限。因此,可以采用上述格式将分辨率保持在2 23 中的1左右。但是固定点卡在设计时选择的比例尺上。如果它需要表示一个其大小落在定点格式的第2位的数字,则其解析度仅为2 2 中的1。