【问题标题】:How can float use as much memory as long (32 bits), but store much more numbers?float 如何使用尽可能多的内存(32 位),但存储更多的数字?
【发布时间】:2020-05-20 10:49:14
【问题描述】:

Long int 的范围从 -2147483648 到 2147483647。它使用 32 位内存。 Float 的范围为 -3.4E+38 到 +3.4E+38,但大小相同。这怎么可能?

【问题讨论】:

    标签: floating-point long-integer


    【解决方案1】:

    float 不会精确编码每个整数值 [-2147483648 到 2147483647]。关于3.9% 其中。评论binary32

    【讨论】:

    • 3.90625%。
    • 全部从 0 到 16,777,215 (2^24)。然后,对于 binade [2^24, 2^25) 中的那些,8,388,608(2^23,由于显式有效位字段中的 23 位),以及每个以 2^25, 2^26 开头的 binade 的 2^23 , 2^27, 2^28, 2^29, 2^30, 和 2^31,所以 8 个binades。因此 2^24 + 8•2^23,即 83,886,080。对于负数,-0 已经算作 +0,但我们有 -2^24,所以相同的数字,总共 167,772,160,即 2^32 的 3.90625%。
    猜你喜欢
    • 2020-10-06
    • 2016-05-28
    • 2022-01-20
    • 1970-01-01
    • 2019-04-13
    • 2017-01-28
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    相关资源
    最近更新 更多