17Aug

Miért számítanak a számítógépek a nullaaktól?

click fraud protection


A nulláról történő számolás sok számítógépes nyelvben igen gyakori gyakorlat, de miért? Olvassa el, miközben feltárjuk a jelenséget, és miért olyan széles körben elterjedt.

A mai kérdés &A válaszüzenet a SuperUser - a Stack Exchange megosztottságának köszönhetően - a Q & A webhelyek közösségi szintű csoportosítása.

A

SuperUser olvasó kérdése A DragonLord kíváncsi arra, hogy a legtöbb operációs rendszer és a programozási nyelvek számítanak nulláról.Így írja:

A számítógépek hagyományosan numerikus értékek nulláról indulnak. Például a C-alapú programozási nyelvek tömbjei az index nullától kezdődnek.

Milyen történelmi okok léteznek erre, és milyen gyakorlati előnyök számítanak a nullától, többet számolnak az egyiktől?

Miért valóban? Amint olyan széles körben elterjedt, mint a gyakorlat, biztosan vannak gyakorlati okok annak végrehajtására.

Az

SuperUser válaszadó Matteo a következő észrevételeket kínálja:

Az 0-ból származó tömbök számlálása leegyszerűsíti az egyes elemek memóriacímének kiszámítását.

instagram viewer

Ha egy tömb egy adott pozícióban van tárolva a memóriában( ez az úgynevezett cím), akkor az egyes elemek pozíciója

elemként( n) = address + n *

számítással számítható ki. Ha az első elemet az elsőnek tekintjük,

elem( n) = cím +( n-1) * méret az elemek közül

Nem nagy különbség, de minden egyes hozzáféréshez szükségtelen kivonást ad.

Szerkesztett hozzáadás:

  • A tömbindex mint eltolás használata nem követelmény, hanem csak szokás. Az első elem eltolását a rendszer elrejtheti, és figyelembe vehető az elemek elosztásakor és hivatkozásakor.
  • A Dijkstra kiadott egy cikket: "Miért kellene a számozás nulláról indulni"( pdf), ahol megmagyarázza, miért jobb választás a 0-tól? A nullától kiindulva a tartományok jobb ábrázolása lehetséges.

Ha mélyrehatóbbá kívánja tenni a választ, a Dijkstra-papír tájékoztató jellegű.

Van valami a magyarázat hozzáadásához? Hangzik ki a megjegyzésekben. Szeretne többet válaszolni a többi technikus-tudós Stack Exchange felhasználóiról? Nézze meg a teljes vitafonalat itt.