2010-09-14 2 views
30

Только что спросил мой пятилетний ребенок: какое наибольшее количество в компьютере?Самое большое число на компьютере когда-либо

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

Бесконечность не допускается.

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

+14

Шахта всегда одна больше! (Ответит ли это на вопрос?) –

+4

Мне нравится, как почти ни один из ответов не учитывает вопрос, возникший у 5-летнего. – BoltClock

+6

Грустный вопрос закрыт. На самом деле это довольно интересно. Предположим, что ваш жесткий диск составляет 1 ТБ (8'000'000'000'000 бит), и вы напечатаете номер, который подходит на нем на бумаге в виде шестнадцатеричных цифр (никто не сделает этого, но давайте предположим), это 2 000 000 000 000 шестнадцатеричных цифр. Каждая страница будет содержать 4000 шестнадцатеричных цифр (40 х 100 цифр). Теперь уложите страницы друг на друга (скажем, каждая страница имеет толщину 0,004 дюйма/0,1 мм), тогда стек будет иметь высоту 5 км. –

ответ

39

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

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

Так как об этом:

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

В квадрате.

Нет, подождите, кубик. Нет, поднял до власти!

Проклятье!

+4

Это фантастическая ссылка на статью. Спасибо! – Yehonatan

+0

Отличная статья. – serg

+0

Согласитесь, это замечательно! –

13

примерно 2^AVAILABLE_MEMORY_IN_BITS

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

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

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

EDIT # 2: Однажды я прочитал эту статью: Who Can Name the Bigger Number, который должен обеспечить целую массу интересной информации для вашего малыша. Очевидно, он не ваш обычный пятилетний ребенок. Таким образом, это может привести к тому, что вы начнете в прохладном направлении насчет чисел и вычислений.

+6

Минус 640K, необходимый ОС. –

+0

Жесткие диски также будут доступны. ;) –

+2

На самом деле это '(2^(AVAILABLE_MEMORY_IN_BITS + 1)) - 1' –

1

Размер, очевидно, будет ограничен общим размером жестких дисков, которые вы можете разместить на своем ПК. В конце концов, вы можете сохранить номер в текстовом файле, занимающем все дисковое пространство.

У вас могут быть диски 4x2Tb даже в простой коробке, поэтому доступно 8Tb. если вы храните как двоичный код, то наибольшее число - 2 pow 64000000000000.

+0

Фактически я бы сказал, что размер всего доступного хранилища для машины, а не только его диск. – Woody

+0

Ну, если вы используете текстовый файл, то ваш номер будет не таким большим, как если бы вы использовали двоичный файл. –

+1

Как насчет облака? –

32

Биты: не номера. You, как программист, придайте им значение, которое вы хотите, возможно, цифры.

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

+6

Джон Скит сказал бы это. – Yehonatan

+2

Мне нравится этот ответ +1 –

+2

Возможно, не в духе вопроса ... :) – annakata

19
// wait to see 
for(;;) 
{ 
    printf("9"); 
} 
+4

, но он никогда не останавливается – Yehonatan

+3

Точка – mikek3332002

+5

Это остановится, только не по себе. – Gabe

3

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

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

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

Таким образом, вопрос не имеет смысла, поскольку он не имеет контекста.

21

Errr это пятилетний?

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

+3

+2 если бы мог. Это первый ответ, который фактически решает вопрос. – Icode4food

+18

объяснение смерти было бы более сложным ... – Yehonatan

+5

Я задавался вопросом о умирающем бите, возможно, «перед сном» или сопутствующим будет лучше – Jaydee

1

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

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

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

+0

Вы принимаете несжатое целочисленное представление. С помощью плавающей точки вы можете получить гораздо больше, и сжатие еще больше увеличит вас! – Gabe

+0

Используя приведенную выше формулу, вы можете рассчитать размер стека для других устройств (сотовый телефон, iPod, телевизор и т. Д.). Но трудно получить номер для Интернета. –

+0

+1 для визуального объяснения. я бы использовал dec вместо hex tho. – Yehonatan

1

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

Общепринятое число рядов Lisp особенно мощное. У этого есть что-то, называемое «bignums», которое является целым числом, которое может быть сколь угодно большим, ограниченным количеством доступных.

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

4

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

0

Зависит от того, насколько компьютер может обрабатывать. Хотя есть несколько случаев, когда компьютер может обрабатывать числа, превышающие (2^(бит-1) -1) ... Например: Мой компьютер 64 бит (9223372036854775807), однако калькулятор, который поставляется вместе с самим компьютером, может обрабатывать номера до 10^9999.

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

Или, если речь идет о визуально видеть его на компьютерах, вы можете просто сделать программу, которая, на мониторе, повторяющий писать 9 и не пропускает эту строку, чтобы сформировать постоянно растущую кучу 9.: P

1

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

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

0

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

#include <stdlib.h> 
#include <stdio.h> 
int main(){ 
int i = 0; 

for (i=0; i<=i; i++){ 
printf("%i\n",i); 
i++; 
} 
} 

И дайте ему поработать, пока она не остановится^^

Смежные вопросы