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

Apr 16, 2025
Оборудование
НЕКЕШЕРОВАННЫЙ КОНТЕНТ


Счет с нуля - очень распространенная практика во многих компьютерных языках, но почему? Читайте дальше, пока мы исследуем это явление и почему оно так широко распространено.

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

Вопрос

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

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

Какие исторические причины существуют для этого и какие практические преимущества дает счет с нуля перед счетом с единицы?

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

Ответ

Участник SuperUser Маттео предлагает следующие идеи:

Подсчет массивов от 0 упрощает вычисление адреса памяти каждого элемента.

Если массив хранится в заданной позиции в памяти (она называется адресом), позиция каждого элемента может быть вычислена как

элемент (n) = адрес + n * размер_элемента

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

элемент (n) = адрес + (n-1) * размер_элемента

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

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

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

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


Есть что добавить к объяснению? Отключи в комментариях. Хотите узнать больше ответов от других технически подкованных пользователей Stack Exchange? Ознакомьтесь с полной веткой обсуждения здесь .

Why Do Computers Count From Zero? (16 Solutions!!)

#1 How Computers Count?

Computers Count From Zero .. Confused?? - How To Fix! (Java / Python)

How Do Computers Keep Time?

Why Do Computers Use 1s And 0s? Binary And Transistors Explained.

Exploring How Computers Work

Why Use Binary? - Computerphile


Оборудование - Самые популярные статьи

Как последствия Meltdown и Spectre повлияют на мой компьютер?

Оборудование Feb 21, 2025

НЕКЕШЕРОВАННЫЙ КОНТЕНТ У компьютерных процессоров есть серьезный недостаток в конструкции, и вс�..


Как проверить оперативную память вашего компьютера на наличие проблем

Оборудование Jul 30, 2025

Ваш компьютер нестабилен? Возможно, проблема с его оперативной памятью. Чтобы проверить, вы можете ..


Как включить режим разработчика на вашем Chromebook

Оборудование Jul 3, 2025

Переведите Chromebook в режим разработчика, и вы получите полный root-доступ, в том числе возможность изме..


Как работать в автономном режиме на Chromebook

Оборудование Dec 30, 2024

НЕКЕШЕРОВАННЫЙ КОНТЕНТ Вопреки всей критике, Chromebook может быть на удивление полезным в автономном..


Как оцифровать / сделать резервную копию кассет и других старых носителей

Оборудование Jan 9, 2025

НЕКЕШЕРОВАННЫЙ КОНТЕНТ Если у вас есть старые кассеты, неплохо было бы оцифровать их и сделать ре�..


Как вы рассчитываете скорость процессора на многоядерных процессорах?

Оборудование Nov 1, 2024

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


Как настроить маршрутизатор для ведения журнала URL-адресов в сети

Оборудование Jul 11, 2025

Не скрывайте, кто какие сайты посещает в вашей локальной сети. Используйте наш двухсторонний подхо..


Прокрутка окна под мышкой в ​​Windows 7 / XP / Vista

Оборудование Nov 9, 2024

НЕКЕШЕРОВАННЫЙ КОНТЕНТ Вы когда-нибудь замечали, что вам нужно переключиться в окно, прежде чем вы смож..


Категории