微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果我永远增加一百万,会发生什么?它会停到特定地点吗?

如何解决如果我永远增加一百万,会发生什么?它会停到特定地点吗?

我有一个简单的问题!自从我开始编程以及了解循环以来,我一直在考虑这一点!然后我很好奇并尝试了这段代码

i = 1000000

while True:
    i = i + 1000000
    print(i)
    print("\n")

现在它所做的就是,它会永远循环并为其添加一百万。现在,当我运行它时,我得到了这个结果。当然,这并不是它能继续进行的全部结果,实际上我已经等了一会儿,并且位数越来越高。

2000000
4000000
8000000
16000000
32000000
64000000
128000000
256000000
512000000
1024000000
2048000000
4096000000
8192000000
16384000000
32768000000
65536000000
131072000000
262144000000
524288000000
1048576000000
2097152000000
4194304000000
8388608000000
16777216000000
33554432000000
67108864000000
134217728000000
268435456000000
536870912000000
1073741824000000
2147483648000000
4294967296000000
8589934592000000
17179869184000000
34359738368000000
68719476736000000
137438953472000000

现在的主要问题是何时结束?当达到特定数字值(计算机不再能处理)时,它将结束吗?否则它可能仍会继续运行,但可能会显示其他内容,因为数字数据已经很大。我还了解到整数范围的限制是

-2147483648 through 2147483647

但是正如您所看到的,它已经超过了该限制,因此请想象一下,如果这种情况一直持续下去。计算机存储数字值是否有限制?也许有,也许当我运行了3天 STRAIGHT 并达到该点时,它可能会崩溃或仅显示其他内容。老实说,我不知道,这就是为什么我在这里问,因为我很好奇。我首先使用 C编程语言进行了尝试,但是到目前为止,我目前正在使用python,所以可以!我决定用python做一个例子。

请注意!我已对此进行了搜索,其中甚至与我遇到的问题有关。此one无关,是另一种方法

我希望有人可以通过这种好奇心帮助我!谢谢堆栈溢出!如此棒的社区!

PS:我跑步并到达了这一点

498440927436178622366861474692439884300995570929598398266702446687630808960468047582382395242248225907433584421759143160092187215205256617226880264837585355733863771168459738653479046086878596306301605300463657918205562087123131825100353174055313738856867936302584245361078518120637146975526970179055022559764924639831318805713447669816741172259599922734803151959294827080412818916281925875019140221413849948185217313045344874046615977984000000

996881854872357244733722949384879768601991141859196796533404893375261617920936095164764790484496451814867168843518286320184374430410513234453760529675170711467727542336919477306958092173757192612603210600927315836411124174246263650200706348110627477713735872605168490722157036241274293951053940358110045119529849279662637611426895339633482344519199845469606303918589654160825637832563851750038280442827699896370434626090689748093231955968000000

1993763709744714489467445898769759537203982283718393593066809786750523235841872190329529580968992903629734337687036572640368748860821026468907521059350341422935455084673838954613916184347514385225206421201854631672822248348492527300401412696221254955427471745210336981444314072482548587902107880716220090239059698559325275222853790679266964689038399690939212607837179308321651275665127703500076560885655399792740869252181379496186463911936000000

3987527419489428978934891797539519074407964567436787186133619573501046471683744380659059161937985807259468675374073145280737497721642052937815042118700682845870910169347677909227832368695028770450412842403709263345644496696985054600802825392442509910854943490420673962888628144965097175804215761432440180478119397118650550445707581358533929378076799381878425215674358616643302551330255407000153121771310799585481738504362758992372927823872000000

解决方法

Python可以处理任意大的数字,因为python具有内置的任意精度整数。该限制与Python可以访问的RAM内存量有关。这些内置的Long Integers算法是作为一个Integer对象实现的,该对象最初设置为32位以提高速度,然后根据需要开始分配内存。

整数通常使用4个字节或32位的内存字来存储,因此可以存储从0到4,294,967,295(2e32 -1)的整数。

但是,如果您的系统有1GB可用给python进程,它将有8589934592位代表数字,并且您可以使用(2e8589934592 -1)之类的数字。

,

计算机只能处理不超过一定大小的数字,但这是需要注意的。

  • 2147483648至2147483647是32位数字的限制。
  • 当今大多数计算机可以处理64个数字 位,即-9,223,372,036,854,775,808至 9,807,或从-(2 ^ 63)到2 ^ 63-1
  • 可以创建一个可以处理任意大数的软件,只要RAM或存储就足够了。这些解决方案相当慢,但是例如SSL加密基于数千位数字。

请注意,您在每次迭代中将最初的一百万加倍,而不是一百万。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。