Почетна » како да » Зашто рачунари рачунају од нуле?

    Зашто рачунари рачунају од нуле?


    Бројање од нуле је уобичајена пракса на многим рачунарским језицима, али зашто? Прочитајте док истражујемо феномен и зашто је он тако раширен.

    Данашња сесија питања и одговора долази нам захваљујући СуперУсер-у - подјела Стацк Екцханге-а, груписане од стране заједнице веб-локација за питања и одговоре.

    Питање

    Читач СуперУсер-а ДрагонЛорд занима зашто се већина оперативних система и програмских језика рачуна од нуле. Пише:

    Рачунари су традиционално нумерички нумерички почели од нуле. На пример, низови програмских језика засновани на Ц-у почињу од нуле индекса.

    Који историјски разлози за то постоје и које практичне предности се рачуна од нуле имају више од једног броја?

    Зашто заиста? Као што је пракса широко распрострањена, сигурно постоје практични разлози за њено спровођење.

    Одговор

    Доприносник СуперУсер-а Маттео нуди следеће увиде:

    Бројање низова од 0 поједностављује израчунавање меморијске адресе сваког елемента.

    Ако је низ похрањен у одређеној позицији у меморији (то се зове адреса), положај сваког елемента може се израчунати као

    елемент (н) = адреса + н * величина_елена 

    Ако први елемент сматрате првим, рачунање постаје

    елемент (н) = адреса + (н-1) * сизе_оф_тхе_елемент 

    Није велика разлика, али додаје непотребно одузимање за сваки приступ.

    Измењено да бисте додали:

    • Употреба индекса поља као офсет није услов, већ само навика. Помак првог елемента може бити скривен од стране система и узети у обзир приликом алокације и референцирања елемента.
    • Дијкстра је објавио чланак „Зашто би нумерација требала почети од нуле“ (пдф) гдје објашњава зашто је почетак с 0 бољи избор. Почевши од нуле омогућава бољу заступљеност опсега.

    Ако желите да дубље уђете у одговор, Дијкстра папир је информативни текст.


    Имате ли нешто да додате објашњењу? Звучи у коментарима. Желите ли прочитати више одговора од других технолошки паметних Стацк Екцханге корисника? Погледајте цео дискусију овде.