Skaitīšana no nulles ir ļoti izplatīta prakse daudzās datoru valodās, bet kāpēc? Lasiet tālāk, kad mēs izpētām fenomenu un kāpēc tā ir tik plaši izplatīta.
Šodienas jautājumu un atbilžu sesija mums priecājas par SuperUser - Stack Exchange dalību, kas ir kopienas vadīta Q & A tīmekļa vietņu grupa.
SuperUser lasītājs DragonLord ir interesanti par to, kāpēc lielākā daļa operētājsistēmu un programmēšanas valodu tiek skaitītas no nulles. Viņš raksta:
Datori tradicionāli sakrīt skaitliskās vērtības, sākot no nulles. Piemēram, masīvi C programmēšanas valodās sākas ar nulles indeksu.
Kādi vēsturiski iemesli pastāv, un kādas ir praktiskas priekšrocības, sākot no nulles, skaitīt no viena?
Kāpēc patiešām? Tā kā prakse ir plaši izplatīta, noteikti ir praktiski iemesli tās īstenošanai.
SuperUser ieguldītājs Matteo piedāvā šādu ieskatu:
Skaitīšanas masīvi no 0 vienkāršo katra elementa atmiņas adreses aprēķināšanu.
Ja masīvs tiek glabāts noteiktā pozīcijā atmiņā (to sauc par adresi), katra elementa pozīciju var aprēķināt kā
elements (n) = adrese + n * size_of_the_element
Ja jūs pirmo reizi uzskatāt pirmo elementu, aprēķins kļūst
elements (n) = adrese + (n-1) * size_of_the_element
Nav milzīgas atšķirības, bet katrai piekļuvei tas rada nevajadzīgu atņemšanu.
Rediģēts, lai pievienotu:
- Masīva indeksa izmantošana kā nobīde nav prasība, bet tikai ieradums. Sistēma slēpjas ar pirmā elementa nobīdi un tiek ņemta vērā, piešķirot un atsaucoties uz elementu.
- Dijkstra publicēja rakstu "Kāpēc numerācija jāsāk ar nulli" (pdf), kur viņš paskaidro, kāpēc, sākot ar 0, ir labāka izvēle. Sākot ar nulli, tiek nodrošināta labāka diapazonu attēlošana.
Ja jūs vēlaties padziļināt atbildi, Dijkstra papīrs ir informatīvs lasījums.
Vai kaut ko pievienot paskaidrojumam? Skatieties komentāros. Vēlaties lasīt citas atbildes no citiem tehnoloģiju savvy Stack Exchange lietotājiem? Šeit skatiet pilnu diskusiju pavedienu.