[identity profile] ksniko.livejournal.com posting in [community profile] useless_faq
А вот почему нумерация домов на улице начинается с единицы, а нумерация памяти в компьютере – с нуля?
Это случайно или в этом есть некий сакральный смысл?
А можно ли наоборот?
Дома с нуля, память с единицы?
Если нельзя, то почему?
Page 1 of 2 << [1] [2] >>

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

(no subject)

From: [identity profile] ghan.livejournal.com - Date: 2013-06-28 12:56 am (UTC) - Expand

(no subject)

From: [identity profile] thetvv.livejournal.com - Date: 2013-06-28 12:58 am (UTC) - Expand

(no subject)

From: [identity profile] idemidov.livejournal.com - Date: 2013-06-28 01:15 pm (UTC) - Expand

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

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

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

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

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

(no subject)

From: [identity profile] xplin.livejournal.com - Date: 2013-06-27 09:19 pm (UTC) - Expand

(no subject)

From: [identity profile] urem-temon.livejournal.com - Date: 2013-06-27 09:35 pm (UTC) - Expand

(no subject)

From: [identity profile] xytop.livejournal.com - Date: 2013-06-28 07:49 am (UTC) - Expand

Date: 2013-06-27 06:23 pm (UTC)
From: [identity profile] apashenko.livejournal.com
Дома, как и все реальные вещи, считают естественными натуральными числами, ряд которых начинается с единицы. Ноль в множество натуральных чисел не входит.
Память же в компьютере не нумеруется, а адресуется (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 — третья и т.д.

Date: 2013-06-27 11:09 pm (UTC)
From: [identity profile] thetvv.livejournal.com
AP> Ноль в множество натуральных чисел не входит.

Я тоже так думал, когда в школе учился. Позже оказалось, что всё не так (http://ru.wikipedia.org/wiki/%D0%9D%D0%B0%D1%82%D1%83%D1%80%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D1%87%D0%B8%D1%81%D0%BB%D0%BE#.D0.9D.D0.BE.D0.BB.D1.8C_.D0.BA.D0.B0.D0.BA_.D0.BD.D0.B0.D1.82.D1.83.D1.80.D0.B0.D0.BB.D1.8C.D0.BD.D0.BE.D0.B5_.D1.87.D0.B8.D1.81.D0.BB.D0.BE).

(no subject)

From: [identity profile] ghan.livejournal.com - Date: 2013-06-28 01:33 am (UTC) - Expand

(no subject)

From: [identity profile] apashenko.livejournal.com - Date: 2013-06-28 03:15 am (UTC) - Expand

(no subject)

From: [identity profile] marina-less.livejournal.com - Date: 2013-06-28 04:01 am (UTC) - Expand

(no subject)

From: [identity profile] qolorado.livejournal.com - Date: 2013-06-28 03:59 pm (UTC) - Expand

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

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

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

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

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

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

(no subject)

From: [identity profile] khathi.livejournal.com - Date: 2013-06-27 10:20 pm (UTC) - Expand

(no subject)

From: [identity profile] ghan.livejournal.com - Date: 2013-06-28 12:31 am (UTC) - Expand

Date: 2013-06-27 06:30 pm (UTC)
From: [identity profile] beesay.livejournal.com
Лучше бы спросили, почему Дионисий Малый не придумал нулевой год, из-за чего люди до сих пор путаются

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

(no subject)

From: [identity profile] ghan.livejournal.com - Date: 2013-06-28 12:32 am (UTC) - Expand

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

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

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

(no subject)

From: [identity profile] xen0n.livejournal.com - Date: 2013-06-28 10:34 am (UTC) - Expand

(no subject)

From: [identity profile] ikaktys.livejournal.com - Date: 2013-06-28 11:03 am (UTC) - Expand

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

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

Логично.

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

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

(no subject)

From: [identity profile] aeropax.livejournal.com - Date: 2013-06-29 08:05 am (UTC) - Expand

(no subject)

From: [identity profile] elvit.livejournal.com - Date: 2013-06-29 08:35 am (UTC) - Expand

(no subject)

From: [identity profile] Эргил Осин - Date: 2013-06-27 09:59 pm (UTC) - Expand

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

(no subject)

From: [identity profile] erminemd.livejournal.com - Date: 2013-06-27 11:27 pm (UTC) - Expand

(no subject)

From: [identity profile] thetvv.livejournal.com - Date: 2013-06-28 01:14 am (UTC) - Expand

(no subject)

From: [identity profile] ghan.livejournal.com - Date: 2013-06-28 12:37 am (UTC) - Expand

(no subject)

From: [identity profile] sashaandaigul.livejournal.com - Date: 2013-06-28 05:31 am (UTC) - Expand

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

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

Date: 2013-06-27 10:22 pm (UTC)
From: [identity profile] khathi.livejournal.com
Считается, что индусы то ли в раннем средневековье, то ли в поздней античности.

Date: 2013-06-27 10:57 pm (UTC)
From: [identity profile] thetvv.livejournal.com
Там, где нужен порядковый номер, счет идет с единицы, а там, где нужно смещение — с нуля.

Вот Вы выше написали, что Вы — программист. OK, тогда поясню на близком Вам примере. Допустим, Вы получили пакет из трех байт. Первый байт имеет смещение 0 (от начала пакета, то есть от этого же первого байта), второй байт — смещение 1, третий — смещение 2. Обратите внимание, тут мы считаем байты по порядку от единицы (первый, второй, etc.) если упоминаем порядковый номер в привычном нам натуральном счете, но если будем иметь в виду смещение каждого байта, тогда начнем их же перечислять с нуля.

Нумерация же домов обычно идет с единицы, так как так сложилось исторически. Преимущество такого подхода в том, что нет возможной путаницы при устном и письменном упоминании номеров домов, то есть первый дом, и дом N1 — это обычно один и тот же дом. То есть и в одном случае у нас единица («первый» == 1), и в другом (N1), это удобно. Впрочем, кое-где и с нуля улицы нумеруют. Подробности — в Википедии. (http://ru.wikipedia.org/wiki/%D0%9D%D1%83%D0%BC%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D0%B4%D0%BE%D0%BC%D0%BE%D0%B2)
Edited Date: 2013-06-27 11:11 pm (UTC)

Date: 2013-06-28 12:28 am (UTC)
From: [identity profile] ghan.livejournal.com
Счет с нуля появился позже (что естественно, потому что и сам нуль как абстрактная категория, придуман позднее, для счета натуральных предметов он вроде и нужен, но не обязателен, достаточно сказать - "нету"). Удобен же он потому, что при счете с нуля разряд не переполняется при достижении им максимума, что позволяет иметь на один разряд меньше, а это существенная экономия.

Date: 2013-06-28 12:41 am (UTC)
From: [identity profile] thetvv.livejournal.com
Ну и что, что нуль придуман позже? Сама по себе нумерация домов появилась еще гораздо позже, например британские дома начали нумероваться с "Почтового закона (акта)" 1765 года (http://ru.wikipedia.org/wiki/%D0%9D%D1%83%D0%BC%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D0%B4%D0%BE%D0%BC%D0%BE%D0%B2#.D0.9D.D1.83.D0.BC.D0.B5.D1.80.D0.B0.D1.86.D0.B8.D1.8F_.D0.B4.D0.BE.D0.BC.D0.BE.D0.B2_.D0.B2_.D0.95.D0.B2.D1.80.D0.BE.D0.BF.D0.B5). И это, при счете с нуля при достижении максимума всё равно происходит переполнение, так что выигрыш на разряд получается лишь в частных случаях, когда максимум кратен степени двойки.

(no subject)

From: [identity profile] ghan.livejournal.com - Date: 2013-06-28 12:52 am (UTC) - Expand

(no subject)

From: [identity profile] thetvv.livejournal.com - Date: 2013-06-28 01:05 am (UTC) - Expand

(no subject)

From: [identity profile] ghan.livejournal.com - Date: 2013-06-28 01:16 am (UTC) - Expand

(no subject)

From: [identity profile] thetvv.livejournal.com - Date: 2013-06-28 01:31 am (UTC) - Expand

(no subject)

From: [identity profile] ghan.livejournal.com - Date: 2013-06-28 01:44 am (UTC) - Expand

Date: 2013-06-28 01:57 am (UTC)
From: [identity profile] vombatus123.livejournal.com
Кроме десятеричной системы, в программировании используется шестнадцатеричная и двоичная. Любые 4 бита вы можете записать в шестнадцатеричной системе одним символом, от 0 до F, т.е. от 0 до 15, десятичное же 16 в шестнадцатеричной системе записывается уже двумя символами. Так же и байт в шестнадцатеричной системе записывается всего двумя символами, от нуля до FF. Взглянув на такое число, можно легко понять, что находится в каждом разряде байта, 0 или 1.

Date: 2013-06-28 02:12 am (UTC)
From: [identity profile] ghan.livejournal.com
Основание системы счисления значения не имеет. Вопрос был о начале отсчета.

(no subject)

From: [identity profile] vombatus123.livejournal.com - Date: 2013-06-28 02:57 am (UTC) - Expand

(no subject)

From: [identity profile] ghan.livejournal.com - Date: 2013-06-28 03:16 am (UTC) - Expand

Date: 2013-06-28 02:19 am (UTC)
From: [identity profile] angerona.livejournal.com
Такие забавные ответы. На самом деле все можно -- все абстракция. Собственно, пару недель назад как раз во время прогулки заметили и показали детям номер на церкви посреди города: номер там был нулевой. Вот такой адрес.
http://www.cccambridge.org/

(Посмотрите, там внизу написан их адрес).

Date: 2013-06-28 06:10 am (UTC)
From: [identity profile] rocketsan.livejournal.com
Раньше была битва за каждый байт - памяти ведь много не бываает... Почему ноль простаивает? Решили и его в дело приплести.
Edited Date: 2013-06-28 06:10 am (UTC)

Date: 2013-06-28 07:28 am (UTC)
From: [identity profile] stairian.livejournal.com
Вы просто смешиваете разные понятия.
ПЕРВЫЙ элемент массива - обозначается в компьютере индексом 0. И в этом нет противоречия.

Date: 2013-06-28 09:34 am (UTC)
From: [identity profile] isaak-bobroga.livejournal.com
Нумерация, и вообще счет объектов с единицы - естественный в плане терминологии. Единица - нечто существующее. Если есть дом - то это "один дом", или "первый дом" или "дом 1". Выражение дом 0 означало бы несуществование дома. Теоретически, улица начинается с несуществующего дома 0. Согласно своей природе, он невидим.
Счет с 0 в массивах в СИ и ассемблере имеет техническую природу. Разумеется, первая ячейка памяти идет с офсетом 0, и механизм обращения к элементу массива тупо проще, если нумеровать с 0. Но в других местах это вылазит в осложнение. Если у нас есть N объектов, то для обращения к ним в массиве надо перечислять индексы с 0 до N-1. Лишний гемморой для программиста, а вызвано всего лишь желанием оптимизировать процессы и память на самом компьютере.

Date: 2013-06-28 09:50 am (UTC)
From: [identity profile] rain251.livejournal.com
дома-то с единицы, а вот комната 00 во многих административных зданиях есть.

Date: 2013-06-28 11:55 am (UTC)
From: [identity profile] idemidov.livejournal.com
Дома это физические объекты, нумерацию физических объектов логично вести с единицы.

Date: 2013-06-28 12:20 pm (UTC)
From: [identity profile] to-se.livejournal.com
Начинают с нуля, просто дом номер ноль это отсутствующий дом.
Page 1 of 2 << [1] [2] >>