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

Нумерация

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

[identity profile] xen0n.livejournal.com 2013-06-28 10:34 am (UTC)(link)
Разве бредовость - это блокирующая проблема? Оглянитесь на этот мир! :-)

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

Для указателей, как вариант, вполне можно 0x0 называет единицей, 0x1 называть двойкой, итд.
Или же для обращения к первой ячейке памяти (которая offset 0), использовать значение 0x1, к следующей - 0x2, ну и далье. А для последней - не 0xFF..FF, а 0x0. (это уже потребует изменения "железа")

Это непривычно, хотя может быть даже и не так уж нелогично. Ну и по сути - разная трактовка значений в переменной - давно уже используется. То же 0xFFFFFFFF, в обычных целых переменных, оно иногда равно MAXINT'у, а иногда -1, в зависимости от того, хотим мы ее воспринимать как signed или unsigned.

Можно даже нумеровать память отрицательными или комплексными числами. Или даже цветами:
MOV AX, дерзко-небесно-бирюзовый
только свою математику цветов нужно в этом случае ввести, где бы, например дерзко-небесно-бирюзовый +1 = чертовски-дерзкий-небесный-цвет :-)

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

[identity profile] ikaktys.livejournal.com 2013-06-28 11:03 am (UTC)(link)
аха, все это конечно красиво, но все это в стиле :

#define TRUE FALSE //Happy debugging suckers

#define NULL (::rand() % 2) // would be quite nice aswell


для отладки такого кода с цветами надо будет использовать только приговоренных к смертной казни, причем только альтернативно ориентированных.

одна только чехарда с началом от 0 или от 1 уже может стоить пол кило нервных клеток