Защо компютрите се броят от нула?

Съдържание:

Защо компютрите се броят от нула?
Защо компютрите се броят от нула?

Видео: Защо компютрите се броят от нула?

Видео: Защо компютрите се броят от нула?
Видео: How to Import Multiple vCard Contacts to Gmail or Outlook | Easy Solution! - YouTube 2024, Април
Anonim
 Преброяването от нула е много често срещана практика на много компютърни езици, но защо? Прочетете, докато разглеждаме явлението и защо е толкова широко разпространено.
Преброяването от нула е много често срещана практика на много компютърни езици, но защо? Прочетете, докато разглеждаме явлението и защо е толкова широко разпространено.

Днешната сесия за въпроси и отговори ни идва с любезното съдействие на SuperUser - подразделение на Stack Exchange - обединяване на уеб сайтове с въпроси и отговори.

Въпроса

Reader на 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

Не е огромна разлика, но добавя ненужно изваждане за всеки достъп.

Редактиран за добавяне:

  • Използването на индекса на масива като офсетов не е изискване, а просто навик. Офсетът на първия елемент може да бъде скрит от системата и да бъде взет предвид при разпределянето и посочването на елемент.
  • Dijkstra публикува хартия "Защо номерирането трябва да започне от нула" (pdf), където той обяснява защо започване с 0 е по-добър избор. Започването от нула позволява по-добро представяне на диапазоните.

Ако искате да се вгледате по-дълбоко в отговора, хартията Dijkstra е информативно.

Имате ли нещо, което да добавите към обяснението? Звучи в коментарите. Искате ли да прочетете повече отговори от други потребители на Stack Exchange? Вижте цялата тема на дискусията тук.

Препоръчано: