【问题标题】:How do i go pass an integer's value of 2^62 -1 in a for loop我如何在 for 循环中传递整数值 2^62 -1
【发布时间】:2011-10-26 08:21:01
【问题描述】:

我如何实际指定一个迭代器值大于 int 最大大小的 for 循环?

即我想循环 2^62 -1 次。

编辑:2^62 -1

【问题讨论】:

  • 呃,什么?你到底想做什么?
  • 您的问题标题和正文不匹配超过十亿倍。 ;)
  • 如果您打算在执行此代码后吃晚饭,我建议您在开始之前先吃点零食...
  • 我的 BOTE 计算表明,如果每秒循环 10 亿次,这将需要大约 146.5 年。你有耐心吗?

标签: java for-loop int


【解决方案1】:
for(long i = 0; i < (1L << 62) - 1; ++i){
    //loop
}

【讨论】:

  • 我认为你的意思是 1L &lt;&lt; 62 否则这与 1 &lt;&lt; 30 相同;)
  • 您还想从i = 1i &lt; (1L &lt;&lt; 62) - 1 开始,否则它将是2^62。 :P
  • 致 OP - 让您的孙子孙女在循环结束时告诉我们 :-)
【解决方案2】:

只需将longs 用作循环计数器,并在循环测试中使用long 文字(例如1000000000000L)。如果longs 对您来说太小,您可以使用BigInteger

正如其他答案所述,您将等待很长时间才能结束循环。告诉我们它完成后的进展:)。

【讨论】:

    【解决方案3】:

    这将使您在今天和可预见的未来的硬件上永远保持不变。

    尝试改进您的算法以提高效率。

    【讨论】:

    • 这是对问题的真实评论,但不是对问题的答案。
    • 有时最好的答案/建议是告诉别人不要这样做。
    • @Mobinga 也许他不知道。老实说,你有什么理由想要循环 2^62 - 1 次?迭代次数中的 -1 让我认为这只是解决数学问题的一种糟糕方法。
    • 那么我们应该在恐惧中颤抖,因为任何拥有具有这种计算能力的硬件的人要么 A) 与超智能外星生命有联系 B) 拥有量子计算机农场
    • +1 - 试图为这个荒谬的问题带来一丝现实。
    猜你喜欢
    • 2018-09-17
    • 2021-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多