http://ksniko.livejournal.com/ ([identity profile] ksniko.livejournal.com) wrote in [community profile] useless_faq2013-06-27 07:54 pm

Нумерация

А вот почему нумерация домов на улице начинается с единицы, а нумерация памяти в компьютере – с нуля?
Это случайно или в этом есть некий сакральный смысл?
А можно ли наоборот?
Дома с нуля, память с единицы?
Если нельзя, то почему?

[identity profile] dendrr.livejournal.com 2013-06-27 06:25 pm (UTC)(link)
Вот жил средневековый человек в самом начале улицы. Жил и не тужил. И нравилось ему принимать гостей. И он говорил всем: живу я на улице Могучих Сусликов, в доме с зелеными оконными рамами, приходите.
Но город рос-рос, дома становились более-менее похожими. И его потомки стали говорить проще - "мы живем в крайнем доме". А еще пару веков позже, когда кому-то пришла идея нумеровать дома, то потомки говорили "Мы живем в первом доме по улице Могучих Сусликов". Так и повелось. А слово "первый" обозначается на письме цифрой "1". Вот и весь сказ.

А вот другой человек собрал компьютер. Сначала было несколько просто ячеек памяти. Складывал там, вычитал, умножал... Компьютеры совершенствовались, и понадобилось уже составлять списки. А это уже много ячеек памяти. Ну, память-то расширили - проблема не очень большая.
А как бы извлечь нужное число, подумал человек? Ячейки-то тупо нумерованные, от такого-то номера до какого-то еще. Подряд.
И придумал! Ввел т.н. "индекс". И список обозначался как-то так: M,I. Здесь "M" - номер ячейки, где находится первый элемент списка, а "I" - индекс. То есть номер элемента в списке.
И придумал этот человек правило: если мы нашли (вычислили или ввели с перфокарты) элемент списка с номером "I", то записываем его в ячейку с номером M+I. Соответственно, первый элемент записан в M, и ему соответствует номер (индекс) I=0.
Вот она и нумерация с нуля. Собственно, чтобы не путаться, заодно и сами ячейки нумеровали с нуля.

[identity profile] dendrr.livejournal.com 2013-06-27 06:29 pm (UTC)(link)
Или с компьютером попроще можно объяснить, вот так как-то:

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

А в начальный момент лампочки не горят вообще - а это по определению ноль. Потоооом только появляется единица. Так что комп считает с нуля.

[identity profile] khathi.livejournal.com 2013-06-27 10:20 pm (UTC)(link)
(занудно)
Изначально компьютеры были десятичными. Если не брать машины Цузе, но из них практически ничего не выросло. Это уже потом до всех дошло, что с двомчными числами проще, потому что ламп меньше надо. А придумай БШБ транзистор раньше лет на пять — все бы так и обезъянничали за Эйкеном. ;)

[identity profile] ghan.livejournal.com 2013-06-28 12:31 am (UTC)(link)
Сказ не весь. Однажды улица стала расти в другую сторону. Перенумеровывать старые дома не захотели. И пришлось присваивать новым домам отрицательные номера. Но, поскольку дом "минус пять" - это как-то непривычно, стали писать 01, 02 и так далее...