Почему компьютеры подсчитывают с нуля?

Оглавление:

Почему компьютеры подсчитывают с нуля?
Почему компьютеры подсчитывают с нуля?

Видео: Почему компьютеры подсчитывают с нуля?

Видео: Почему компьютеры подсчитывают с нуля?
Видео: 14-1 Импорт и экспорт карточек vCard в контакты Outlook - YouTube 2024, Май
Anonim
 Подсчет с нуля - очень распространенная практика на многих компьютерных языках, но почему? Читайте дальше, изучая явление и почему оно так широко распространено.
Подсчет с нуля - очень распространенная практика на многих компьютерных языках, но почему? Читайте дальше, изучая явление и почему оно так широко распространено.

Сегодняшняя сессия вопросов и ответов приходит к нам благодаря SuperUser - подразделению Stack Exchange, основанной на сообществах сайтам Q & A.

Вопрос

Читателю SuperUser DragonLord интересно, почему большинство операционных систем и языков программирования подсчитываются с нуля. Он пишет:

Computers traditionally tally numerical values starting from zero. For example, arrays in C-based programming languages start from index zero.

What historical reasons exist for this, and what practical advantages does counting from zero have over counting from one?

Почему? Насколько широко распространена практика, безусловно, есть практические причины ее реализации.

Ответ

Докладчик SuperUser Matteo предлагает следующую информацию:

Counting arrays from 0 simplifies the computation of the memory address of each element.

If an array is stored at a given position in memory (it’s called the address) the position of each element can be computed as

element(n) = address + n * size_of_the_element

Если вы считаете первый элемент первым, вычисление становится

element(n) = address + (n-1) * size_of_the_element

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

Отредактировано для добавления:

  • Использование индекса массива в качестве смещения не является требованием, а просто привычкой. Смещение первого элемента может быть скрыто системой и учтено при распределении и ссылке на элемент.
  • Дейкстра опубликовал статью «Почему нумерация должна начинаться с нуля» (pdf), где он объясняет, почему начинать с 0 является лучшим выбором. Начиная с нуля позволяет лучше отображать диапазоны.

Если вы хотите углубиться в ответ, газета Дейкстра - информативное чтение.

Есть что добавить к объяснению? Звучит в комментариях. Хотите узнать больше ответов от других пользователей Windows? Посмотрите здесь полную дискуссионную тему.

Рекомендуемые: