17Aug

Miks arvutid arvavad nullist?


Arvutamine nullist on paljudes arvuti keeltes väga levinud tava, aga miks? Loe edasi, kui uurime nähtust ja miks see nii laialt levinud.

Tänane küsimus &Vastuste seanss tuleb meile viisakalt SuperUseriga - Q & A veebisaitide kogukonnapõhise grupi Stack Exchange jagunemisest.

Küsimus

SuperUser lugeja DragonLord on huvitav, miks enamus operatsioonisüsteeme ja programmeerimiskeele loetakse nulli. Ta kirjutab:

Arvutid arvestavad tavapäraselt numbrilisi väärtusi alates nullist. Näiteks algavad C-põhiste programmeerimiskeemide massiivid indeksist 0.

Millised on selle ajaloolised põhjused ja millised praktilised eelised loendavad nulli loendamisest alates?

Miks tõesti? Nagu tavaks on laialt levinud, on selle rakendamiseks kindlasti praktilised põhjused.

Vastuseks

SuperUser kaastöötaja Matteo pakub järgmisi arusaamu:

loendamismassiiv 0-st lihtsustab iga elemendi mäluaadressi arvutamist.

Kui massiivi salvestatakse mälus olevasse asendisse( seda nimetatakse aadressiks), saab iga elemendi asukohta arvutada

elemendina( n) = aadress + n * size_of_the element

Kui arvate esimese elemendi esimest, arvutataksemuutub

elemendiks( n) = aadress +( n-1) * size_of_the element

Ei ole suur erinevus, kuid see lisab igale juurdepääsule tarbetu lahutamise.

Redigeeritud lisamiseks:

  • Array indeksi kasutamine nihe ei ole nõue, vaid lihtsalt harjumus. Süsteem võib varjata esimest elementi ja võtta arvesse elemendi eraldamisel ja viitamisel.
  • Dijkstra avaldas dokumendi "Miks nummerdamine peaks algama nullist"( pdf), kus ta selgitab, miks alates 0-st on parem valik. Alates nullist võimaldab vahemike paremat kuvamist.

Kui soovite otsida vastust sügavamalt, on Dijkstra paber informatiivne lugeda.

Kas teil on seletamiseks midagi lisada? Helistage kommentaarides. Kas soovite lugeda rohkem vastuseid teistelt tech-savvy Stack Exchange'i kasutajatelt? Tutvu täieliku arutelu teemaga siit.