Зашто рачунари рачунају од нуле?
Бројање од нуле је уобичајена пракса на многим рачунарским језицима, али зашто? Прочитајте док истражујемо феномен и зашто је он тако раширен.
Данашња сесија питања и одговора долази нам захваљујући СуперУсер-у - подјела Стацк Екцханге-а, груписане од стране заједнице веб-локација за питања и одговоре.
Питање
Читач СуперУсер-а ДрагонЛорд занима зашто се већина оперативних система и програмских језика рачуна од нуле. Пише:
Рачунари су традиционално нумерички нумерички почели од нуле. На пример, низови програмских језика засновани на Ц-у почињу од нуле индекса.
Који историјски разлози за то постоје и које практичне предности се рачуна од нуле имају више од једног броја?
Зашто заиста? Као што је пракса широко распрострањена, сигурно постоје практични разлози за њено спровођење.
Одговор
Доприносник СуперУсер-а Маттео нуди следеће увиде:
Бројање низова од 0 поједностављује израчунавање меморијске адресе сваког елемента.
Ако је низ похрањен у одређеној позицији у меморији (то се зове адреса), положај сваког елемента може се израчунати као
елемент (н) = адреса + н * величина_елена
Ако први елемент сматрате првим, рачунање постаје
елемент (н) = адреса + (н-1) * сизе_оф_тхе_елемент
Није велика разлика, али додаје непотребно одузимање за сваки приступ.
Измењено да бисте додали:
- Употреба индекса поља као офсет није услов, већ само навика. Помак првог елемента може бити скривен од стране система и узети у обзир приликом алокације и референцирања елемента.
- Дијкстра је објавио чланак „Зашто би нумерација требала почети од нуле“ (пдф) гдје објашњава зашто је почетак с 0 бољи избор. Почевши од нуле омогућава бољу заступљеност опсега.
Ако желите да дубље уђете у одговор, Дијкстра папир је информативни текст.
Имате ли нешто да додате објашњењу? Звучи у коментарима. Желите ли прочитати више одговора од других технолошки паметних Стацк Екцханге корисника? Погледајте цео дискусију овде.