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

Нумерация

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

[identity profile] tornader.livejournal.com 2013-06-27 06:10 pm (UTC)(link)
просто ноль - это абстрактная категория.
а единица - объктивная.

[identity profile] b0gu3.livejournal.com 2013-06-27 06:15 pm (UTC)(link)
Дома с нуля? Да можно хоть в минус. Вопрос - зачем?

А в компьютерах нуль = пустая ячейка, естественное начало.

[identity profile] lenivaya.livejournal.com 2013-06-27 06:17 pm (UTC)(link)
возраст тоже с нуля считают

[identity profile] urem-temon.livejournal.com 2013-06-27 06:21 pm (UTC)(link)
счет с единицы - естественный. типа, вот три дома: первый, второй, третий. нумерацию домов придумали ну очень давно, когда все были малограмотные, и нумерация "нулевой, первый, второй" слишком абстрактная. видано ли дело - домов три, а третьего нету!

[identity profile] apashenko.livejournal.com 2013-06-27 06:23 pm (UTC)(link)
Дома, как и все реальные вещи, считают естественными натуральными числами, ряд которых начинается с единицы. Ноль в множество натуральных чисел не входит.
Память же в компьютере не нумеруется, а адресуется (http://ru.wikipedia.org/wiki/%D0%90%D0%B4%D1%80%D0%B5%D1%81%D0%B0%D1%86%D0%B8%D1%8F_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%B8), причём множество возможных адресов совпадает со множеством возможных значений ячеек этой же памяти. Ноль в это множество входит.
С точки зрения естественной нумерации, ячейка с адресом 00000000 — первая, 00000001 — вторая, 00000010 — третья и т.д.

[identity profile] imihajlov.livejournal.com 2013-06-27 06:25 pm (UTC)(link)
Люди считают с единицы, поэтому дома с единицы идут. А компьютер считает с нуля, потому что так удобнее и симметричнее: чтобы перейти к самому первому адресу (который нулевой), нужно просто сбросить все разряды числа в 0.

[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] beesay.livejournal.com 2013-06-27 06:30 pm (UTC)(link)
Лучше бы спросили, почему Дионисий Малый не придумал нулевой год, из-за чего люди до сих пор путаются

[identity profile] xen0n.livejournal.com 2013-06-27 06:40 pm (UTC)(link)
Можно - все условность.
Но некоторая сложность все таки была бы. Сейчас в компьютерах памяти как правило меньше максимума (например, стоит 2Gb хотя вся система может и 64Gb поддерживать), а раньше это ограничение было критичным, во время 286ых например. Оно имеет "физическую" природу - количество бит шины адреса. Ну и сейчас, наверное, кто-то мучается с тем что больше 64G не лезет.

Соответственно, и адресация должна имеет столько же бит, сколько шина адреса. Можно больше, но это нерациональный расход памяти.
Так вот, если переменная-указатель, содержит значение 0, то как называть, чему оно равно? единице, а 1 равно двойке? :-)
Поэтому для адресации памяти, как-то все таки проще с нуля начинать.

[identity profile] nutsey.livejournal.com 2013-06-27 06:49 pm (UTC)(link)
Всё дело в том, что если на пальцах показать ноль то можно и в ответ кулаком в лицо получить.

[identity profile] ikaktys.livejournal.com 2013-06-27 07:16 pm (UTC)(link)
нельзя, бо бред
принцип такой - имеем какую то структуру данных располагающуюся по адресу ХХХХ, для простоты путь будут байты, соответсвенно первый байт будет находится по этому адресу со смещением 0, второй - со смещением 1 и т.д., логично же ?
так работают команды на самом низком уровне - уровне ассемблера, загружаем адрес в регистр и просто "щелкаем" смещением, команды процессора (например всех х86, начиная с 8086) напрямую это поддерживают, и это так же отобразили на уровне С++ и прочих языков

[identity profile] nepilsonis-eu.livejournal.com 2013-06-27 07:16 pm (UTC)(link)
> Всё дело в том, что если на пальцах показать ноль то можно и в ответ кулаком в лицо получить.

Логично.

[identity profile] ikaktys.livejournal.com 2013-06-27 07:26 pm (UTC)(link)
только глупые, которые забыли все позже 3 класса школы, путаются, а остальные вспоминают уроки математики 4-6 класса и что на шкале графика нет отрезка "0", а есть точка "0" и отрезки (-1, 0) и (0, 1)

[identity profile] aeropax.livejournal.com 2013-06-27 07:48 pm (UTC)(link)
Нумерация домов на разных сторонах улицы начинается с разных чисел: 1 и 2.
А иногда и не начинается: где находится дом 1 на Пенсильвания-авеню?
Edited 2013-06-27 19:52 (UTC)

[identity profile] dropjoweapon.livejournal.com 2013-06-27 07:58 pm (UTC)(link)
вам в школе информатику не преподавали?

[identity profile] elvit.livejournal.com 2013-06-27 08:06 pm (UTC)(link)
Иногда не начинается. Иногда сначала все номера домов идут по одной стороне улицы до конца, а потом поворачивают на другую сторону и идут к началу. Напротив дома 25 может оказаться 259, например.

[identity profile] shackled-koenig.livejournal.com 2013-06-27 08:43 pm (UTC)(link)
Ну и как давно придумали нумерацию домов?

[identity profile] 7nu7murik8n.livejournal.com 2013-06-27 08:49 pm (UTC)(link)
>>Ну и как давно придумали нумерацию домов?

А ноль когда придумали?

[identity profile] xplin.livejournal.com 2013-06-27 09:19 pm (UTC)(link)
Ну всяко раньше, чем компьютер. Не?

[identity profile] urem-temon.livejournal.com 2013-06-27 09:35 pm (UTC)(link)
ну уж пораньше программирования :)

[identity profile] Эргил Осин (from livejournal.com) 2013-06-27 09:59 pm (UTC)(link)
Это ничего, в Нижнем Новгороде вон улица Рабочая вообще имеет только дома 28, 30, 32.
Других домов по ней нет.
И, кстати, Яндекс.Карты её как улицы и не знают :-D А она есть.

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

Page 1 of 3