【问题标题】:Why does an array of all 32-bit integers require 4 GB?为什么所有 32 位整数的数组需要 4 GB?
【发布时间】:2018-02-01 16:58:49
【问题描述】:

在尝试估计存储所有 32 位整数需要多少内存时,我很难理解 4 GB 数字的来源。

一个 32 位整数数据类型有 32 位,每个位可以设置为 1 或 0。那是 2^32 种可能的表示。并且每个表示需要 32 位,总共需要 32 * 2^32 位,即 2^5 * 2^32 = 2^37 位。

而 2^37 位大约是 17 GB,而不是 4 GB。

我哪里错了?

【问题讨论】:

  • 你有 4GB 数据的来源吗?你的工作一目了然。
  • 关于“在尝试估算时 4 GB 数字的来源” 您如何估算?您存储了多少个单独的 32 位整数? 2^5 是从哪里来的 2^5 * 2^32 = 2^37

标签: memory integer byte bit 32-bit


【解决方案1】:

您的 4 GB 实际上是 4.2 GB 吗?

您可能会看到数字 4,294,967,295 用作 32-bit integers 的最大值。

这是因为(如果使用 unsigned 字节):

正确的公式是:(2^32) − 1 = 4294967295

【讨论】:

    猜你喜欢
    • 2013-02-27
    • 2021-02-12
    • 2010-11-10
    • 1970-01-01
    • 2022-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多