【问题标题】:How many integers can I create in 1GB memory?我可以在 1GB 内存中创建多少个整数?
【发布时间】:2016-02-22 10:09:51
【问题描述】:

在 Robert Sedgewick 的《算法》第四版第 200 页中,它说“例如,如果您的计算机上有 1GB 内存(10 亿字节),则不能容纳超过 3200 万个 int 值。”

p>

我计算后感到困惑: 1,000,000,000 字节/4 字节 = 2.5 亿

作者是怎么拿到3200万的?

这本书是这样描述的:

【问题讨论】:

  • 不,作者说的是10亿字节
  • 不要混合位和字节,并且有符号和无符号整数之间存在差异。
  • 在这个问题的范围内签名和未签名没有区别
  • 那是因为书总是有错误的。 And they acknowledge them

标签: data-structures language-agnostic integer memory-consumption


【解决方案1】:

作者已经承认这是本书网站的错误,请参考以下链接: http://algs4.cs.princeton.edu/errata/errata-printing3.php

【讨论】:

    【解决方案2】:

    1 Gb = 1073741824 位
    1 个整数 = 32 位
    计算 = (1073741824/32) = (32 * 10242) = (32 * 220) = 3200万

    如果作者的意思是千兆字节,那么答案将是 (32 * 8) 百万 = 2.56 亿

    【讨论】:

    • 32 * 2^20 = 33.554.432 != 32000000 = 32*10^6 = 32 millions。请使用正确的术语。
    • 在二进制系统中 1k = 1024, 1M = 1024k = 1024 * 1024 = 2^20 所以这里 3200 万或 32 Mega = 32 * 2^20 这里只有单位不存在,即。 e.位
    • M 是标准的ISU 后缀,表示10^6无论你在做什么计算,在任何基础上。很长一段时间以来,它对 CS 有一个特殊的含义,这引起了歧义(从来没有买过 HDD?),但现在问题已经解决了二进制后缀 Mi (2^20)。延续旧的误导性用法是危险的。所以请使用正确的术语。
    猜你喜欢
    • 2010-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 2019-04-05
    • 2014-03-02
    • 1970-01-01
    • 2022-01-17
    相关资源
    最近更新 更多