Kodėl kompiuteriai skaičiuoja nuo nulio?

Turinys:

Kodėl kompiuteriai skaičiuoja nuo nulio?
Kodėl kompiuteriai skaičiuoja nuo nulio?

Video: Kodėl kompiuteriai skaičiuoja nuo nulio?

Video: Kodėl kompiuteriai skaičiuoja nuo nulio?
Video: How to Import and Export Contacts in Outlook 2013/2016/2019 💻 New Method 2023 2024, Lapkritis
Anonim
 Skaičiavimas nuo nulio yra labai dažna praktika daugelyje kompiuterių kalbų, bet kodėl? Perskaitykite, kaip mes tiriame reiškinį ir kodėl jis taip plačiai paplitęs.
Skaičiavimas nuo nulio yra labai dažna praktika daugelyje kompiuterių kalbų, bet kodėl? Perskaitykite, kaip mes tiriame reiškinį ir kodėl jis taip plačiai paplitęs.

Šiandieninė klausimų ir atsakymų sesija pateikiama su "SuperUser" - "Stack Exchange", bendruomenės valdoma Q & A grupių asociacija.

Klausimas

"SuperUser" skaitytuvas "DragonLord" yra įdomu, kodėl dauguma operacinių sistemų ir programavimo kalbų skaičiuoja nuo nulio. Jis rašo:

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?

Kodėl iš tikrųjų? Kaip plačiai paplitusi praktika, be abejo, yra praktinių priežasčių ją įgyvendinti.

Atsakymas

"SuperUser" autorius "Matteo" siūlo šias įžvalgas:

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

Jei pirmą elementą laiko pirmuoju, apskaičiavimas tampa

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

Tai nėra didžiulis skirtumas, bet kiekvienai prieigai ji pridedama prie nereikalingo atimties.

Redaguota pridėti:

  • Masyvo indekso naudojimas kaip nuokrypis nėra reikalavimas, bet tik įprotis. Pirmojo elemento nuokrypis gali būti paslėptas sistemos ir į jį atsižvelgiama paskirstant elementą ir jo nuorodos.
  • Dijkstra paskelbė straipsnį "Kodėl numeravimas turėtų prasidėti nulyje" (pdf), kur jis paaiškina, kodėl pradedant nuo 0 yra geresnis pasirinkimas. Pradedant nuo nulio, galima geriau apibūdinti intervalus.

Jei norėtumėte gilinti į atsakymą, Dijkstra popierius yra informatyvus skaitymas.

Ar turite ką nors įtraukti į paaiškinimą? Garsas išjungtas komentaruose. Norite skaityti daugiau atsakymų iš kitų "Tech-savvy Stack Exchange" vartotojų? Patikrinkite visą diskusijų temą čia.

Rekomenduojamas: