我5岁的小孩刚问过:电脑里最大的数字是多少?
我们不是在谈论特定数据类型的最大数量,而是计算机可以代表的最大数量。
不允许无限。
更新我的孩子总是想打印为 那么,让我们说计算机需要 打印这个号码和孩子 知道这是一个很大的数字。当然, 在实践中我们不打印因为 没有足够的树木。
答案 0 :(得分:42)
这个问题实际上是一个非常有趣的问题,数学家已经投入了相当多的思考。您可以在this article中阅读相关内容,这是一本引人入胜且易于阅读的内容。
简单地说,一个名叫Tibor Rado的人通过定义一个名为Busy Beaver数字的序列,开始寻找一些非常大但仍然定义明确的数字。在给定输入 n 符号的情况下,他将BB( n )定义为图灵机在暂停之前可以采取的最大步数。请注意,此序列本质上是不可计算的,因此数字本身虽然定义明确,但很难确定。以下是前几个:
BB(1) = 1
BB(2) = 6
BB(3) = 21
BB(4) = 107
......等等......
BB(5) >= 8,690,333,381,690,951
没有人确定BB(5)究竟有多大,但它是有限的。并且没有人知道BB(6)及以上有多大。但至少这些数字在数学上是完全明确的,不像“人类曾经想过的最大数字,加上一个。” ;)
那怎么样:
计算机可以代表的最大数字是最小的指令,一个小到足以容纳其可用内存的程序可以在暂停之前执行。
平方。
不,等等,立方体。不,提升到自己的力量!
该死!
答案 1 :(得分:32)
比特不是数字。 你,作为程序员,给他们你想要的意思,可能是数字。
现在,我认为1
代表“人类加上一个人认为的最大数字”。
答案 2 :(得分:21)
Errr这是一个五岁的孩子?
怎么样的事情:“我很想告诉你,但这个数字是如此之大,需要很长时间才能说出来,在我告诉你之前我已经死了”。
答案 3 :(得分:19)
// wait to see
for(;;)
{
printf("9");
}
答案 4 :(得分:13)
大约2^AVAILABLE_MEMORY_IN_BITS
编辑:以上是实际存储数字并将所有媒体(RAM,HD,云等)视为内存。减去操作系统占用空间(以KB为单位)并不会“大致”不准确......
如果你想以一种有意义的方式“表示”一个数字,那么你可能想要使用CPU提供的内容:无符号的32位整数(大约4 Gigs)或无符号的64位整数,对于大多数计算机你的孩子会来接触。
注意与5岁儿童交谈:通常,他们只是想要一个事实。给他一个非常大且非常准确的数字(很多位数),比如4'294'967'295
。然后,一旦玻璃窗落到他的眼睛,试着看看解释计算机如何代表数字的距离。
编辑#2:我曾读过这篇文章: Who Can Name the Bigger Number ,应该为您的孩子提供大量有趣的信息。显然他不是你正常的五岁孩子。所以这可能会让你开始关于数字和计算的冷静方向。
答案 5 :(得分:5)
生命的答案(以及这个孩子的问题):42
答案 6 :(得分:3)
这取决于您用来表示它的数据类型。计算机仅存储位(0/1)。作为开发人员,我们给出了含义。 (65可以是数字或字母A
)。
例如,我可以将我的数据类型定义为1^N
,其中N是无符号的,并由任意大小的位数组表示。下一个人可以提出10^N
,这比我最大的数字大十倍。
当然,会有差距,但如果你不需要它们,那没关系。
因此,这个问题没有意义,因为它没有上下文。
答案 7 :(得分:1)
显然,这个尺寸会受到您设置放入PC的硬盘总大小的限制。毕竟,您可以将一个数字存储在占据所有磁盘空间的文本文件中。
即使在一个简单的盒子里你也可以拥有4x2Tb驱动器,所以大约8Tb可用。如果您存储为二进制文件,则最大数字为2 pow 64000000000000
。
答案 8 :(得分:1)
如果您的硬盘驱动器是1 TB(8'000'000'000'000位),并且您将在纸上打印适合它的数字作为十六进制数字(没有人会这样做,但让我们假设),那是2,000,000,000,000个十六进制数字。
每页包含4000个十六进制数字(40 x 100位)。这是500,000,000页。
现在将页面堆叠在一起(假设每页厚度为0.004英寸/0.1毫米),那么堆叠将为5公里(约3英里)高。
答案 9 :(得分:1)
我会尝试给出一个实际的答案。
Common Lisp数字运算特别强大。它有一种叫做“bignums”的东西,它们是可以任意大的整数,受到可用数量的限制。
请参阅:http://en.wikibooks.org/wiki/Common_Lisp/Advanced_topics/Numbers#Fixnums_and_Bignums
答案 10 :(得分:1)
对理论知之甚少,但据我所知,我的问题是:计算机可以代表的最大数字是什么(我补充说:在合理的时间内,而不是打印“9”直到地球将“被太阳吃掉”)。我把我的电脑做了一个简单的计算(用PHP或其他语言):echo pow(2,1023) - 结果:8.9884656743116E + 307。所以我想这是我的电脑可以计算的最大数字。另一方面,我认为最大负数的表示可以是:-0,(0)1
LE:这个计算值是通过PHP获得的,但我试图弄清楚我的Windows计算器可以计算的最大数字是多少,它是pow(2,33219)= 8.2304951207588748764521361245002E + 9999。现在我猜这是我的电脑可以处理的最大数字。
答案 11 :(得分:0)
取决于计算机可以处理多少。虽然有时候计算机可以处理大于(2 ^(bits-1)-1)的数字...例如: 我的电脑是64位(9223372036854775807),但计算机附带的计算器本身可以处理最多10 ^ 9999的数字。
许多其他超级计算机可以超出这些限制,具有最多内存(位)的超级计算机也可能是具有记录的那个(当前最大数量可由计算机保存)。
或者,如果要在计算机上直观地看到它,你可以制作一个程序,在监视器上重复写入9而不是跳过该行以形成一个不断增长的一堆9:P
答案 12 :(得分:0)
我今天早些时候有同样的问题,所以想为什么不制作一些小的c ++代码来看看电脑会停在哪里...... 但是我的笔记本电脑在课堂上没有和我在一起,所以我使用了另一个,这个数字很大但它永远不会结束,我会再运行一晚然后我会分享这个号码 你可以尝试代码是愚蠢的
#include <stdlib.h>
#include <stdio.h>
int main() {
int i = 0;
for (i = 0; i <= i; i++) {
printf("%i\n", i);
i++;
}
}
让它一直运行直至停止^^
答案 13 :(得分:0)
我想您应该为自己5岁的孩子已经提出这样的问题感到自豪。 而且您应该继续推广!这真是太神奇了!话虽如此,我会说说无限 计数错误地思考了数字在计算机内存中的含义。 我觉得这种思维方式是一个障碍。
数学家将永远无法写出pi或eulers的所有数字,但我们完全理解。
举例来说,Pi可以完美地用无限个级数表示:(Pi / 4)= 1-1/3 + 1/5-1/7 + 1/9-…
仅仅因为您实际上无法进入inf。或在控制台中打印每个数字都没有任何意义。
您可能已经打印了代表pi的符号,因此捕获了inf。系列。
计算机代数系统(CAS)始终象征性地表示数字。例如Pi
可能是内存中的一个符号对象(内存中的二进制不直接表示数字。它表示一种“数学算法”,用于产生任意精度的答案)。
然后,您可以对其进行一些数学运算,从一个表达式转换为另一个表达式。
在任何时候我们都不能代表完整的数字。
最后,您可以执行以下两项操作:
A)计算表达式,将其转换为某种数字(或Matrix或其他)。 但是这个数字很可能是一个近似值(例如pi的20位数字)。
B)保留其符号形式以供参考。显然,我们不喜欢盯着符号,因为我们 最终需要在设备上转机。 注意:有时您可以获得在内存中完美表示的有限(非非理性)数字(如数字1) 通过采取限制或inf。字面上没有inf。内存中的数字,但象征性地表示它。 只需将其放入Wolfram alpha中即可:Lim [Exp [-x],x-> Inf];它为您提供数字0。这是完全正确的。
简而言之:
这是人类需要在内存中有一些二进制文件来直接表示导致 数量下降。象征性地完美地代表了它。您可以设计一些算法 只是继续计算pi或eulers数的下一位,为您提供任意精度(现在,这显然是不实际的)。
我希望这至少对您有用或有趣,即使您不同意=)
答案 14 :(得分:0)
继续 chrome 然后点击上面的三个点,然后点击它们,然后点击工具,然后点击开发者工具,点击控制台并输入 Number.MAX_VALUE