Самое большое число компьютеров в мире - PullRequest
34 голосов
/ 14 сентября 2010

Просто спросил мой 5-летний ребенок: какое самое большое число в компьютере?

Мы говорим не о максимальном числе для определенных типов данных, а о самом большом числе, которое может представлять компьютер.

Бесконечность не разрешена.

ОБНОВЛЕНИЕ Мой ребенок всегда также хочет печатать, поэтому предположим, что компьютер должен напечатать это число, и ребенок должен знать, что это большое число,Конечно, на практике мы не будем печатать, потому что деревьев недостаточно.

Ответы [ 13 ]

42 голосов
/ 15 сентября 2010

Этот вопрос на самом деле очень интересный, которому математики посвятили немало размышлений.Вы можете прочитать об этом в этой статье , которая представляет собой увлекательное и доступное чтение.

Вкратце, парень по имени Тибор Радо намеревался найти какого-то действительно большого, но все же хорошо определенного,числа, определяя последовательность, названную числами Занятого Бобра.Он определил BB ( n ) как наибольшее количество шагов, которое может сделать машина Тьюринга перед остановкой, учитывая ввод символов 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) и выше.Но, по крайней мере, эти числа математически четко определены, в отличие от «самого большого числа, о котором когда-либо думал человек, плюс один».;)

А как насчет этого:

Самое большое число, которое может представить компьютер, - это большинство инструкций, которые программа, достаточно маленькая, чтобы поместиться в доступную память, может выполнить перед остановкой.

Квадрат.

Нет, подожди, куб.Нет, возведен в могущество сам по себе!

Черт возьми!

32 голосов
/ 14 сентября 2010

Биты , а не числа. Вы как программист, дайте им желаемое значение, возможно числа.

Теперь я решаю, что 1 представляет "самое большое число, когда-либо придуманное человеком плюс один".

21 голосов
/ 14 сентября 2010

О, это пятилетний ребенок?

Как насчет чего-то вроде: «Я хотел бы сказать вам, но число настолько велико, и потребовалось бы так много времени, чтобы сказать, что я умру, прежде чем я закончу говорить вам».

19 голосов
/ 14 сентября 2010
//  wait to see
for(;;)
{
    printf("9"); 
}
13 голосов
/ 14 сентября 2010

примерно 2^AVAILABLE_MEMORY_IN_BITS

РЕДАКТИРОВАТЬ : Выше указано для фактического сохранения числа и все носители (RAM, HD, облако и т. Д.) Рассматриваются как память. Вычитание объема ОС (измеряется в КБ) не делает «примерно» менее точным ...

Если вы хотите «представить» число осмысленным образом, то, вероятно, вы захотите использовать то, что предоставляет процессор: 32-разрядные целые без знака (примерно 4 гигабайта) или 64-разрядные целые числа без знака для большинства компьютеров, которые придет ваш ребенок в контакте с.

ПРИМЕЧАНИЕ для разговоров с 5-летними: часто они просто хотят фактоида. Дайте ему действительно большое и очень точное число (много цифр), например 4'294'967'295. Затем, как только остекление покидает его глаза, попытайтесь понять, как далеко вы можете продвинуться, объяснив, как компьютеры представляют числа.

РЕДАКТИРОВАТЬ # 2: Однажды я прочитал эту статью: Кто может назвать большее число , которое должно предоставить много интересной информации для вашего ребенка. Очевидно, он не твой обычный пятилетний. Так что это может помочь вам начать работать с цифрами и вычислениями.

5 голосов
/ 26 сентября 2010

Ответ на жизнь (и этот детский вопрос): 42

3 голосов
/ 14 сентября 2010

Это зависит от типа данных, который вы используете для его представления.Компьютер хранит только биты (0/1).Мы, как разработчики, придаем битам смысл.(65 может быть числом или буквой A).

Например, я могу определить свой тип данных как 1^N, где N - без знака и представлено массивом битов произвольного размера.Следующий человек может придумать 10^N, который будет в десять раз больше моего самого большого числа.

Конечно, будут пробелы, но если они вам не нужны, это не имеет значения.

Поэтому вопрос не имеет смысла, так как не имеет контекста.

1 голос
/ 13 января 2014

Не знаю много о теории, но я, насколько я понял из вашего вопроса, это: какое наибольшее число может представлять компьютер (и я добавляю: в разумные сроки, и не печатать «9» до Земля будет "съедена Солнцем"). И я поставил свой компьютер, чтобы сделать одно простое вычисление (в PHP или на любом другом языке): echo pow (2,1023) - в результате: 8.9884656743116E + 307. Я думаю, это самое большое число, которое может вычислить мой компьютер. С другой стороны, я думаю, что представление наибольшего отрицательного числа может быть: -0, (0) 1

LE: Это вычисленное значение было получено через PHP, но я попытался выяснить, какое наибольшее число может вычислить мой Windows-калькулятор, и это Pow (2, 33219) = 8.2304951207588748764521361245002E + 9999. Теперь я думаю, это самое большое число, которое может выдержать мой компьютер.

1 голос
/ 15 сентября 2010

Я постараюсь дать практический ответ.

Распространение общего числа по Лиспу особенно мощно.У него есть нечто, называемое "bignums", которые являются целыми числами, которые могут быть произвольно большими, ограниченными количеством доступных.

См .: http://en.wikibooks.org/wiki/Common_Lisp/Advanced_topics/Numbers#Fixnums_and_Bignums

1 голос
/ 15 сентября 2010

Если на вашем жестком диске 1 ТБ (8'000'000'000'000 бит), и вы напечатаете число, которое помещается на нем, на бумаге в виде шестнадцатеричных цифр (никто не сделает этого, но давайте предположим), это2 000 000 000 000 шестнадцатеричных цифр.

Каждая страница будет содержать 4000 шестнадцатеричных цифр (40 х 100 цифр).Это 500 000 000 страниц.

Теперь сложите страницы друг над другом (скажем, каждая страница имеет толщину 0,004 дюйма / 0,1 мм), тогда длина стопки составит 5 км (* 3 мили).

...