If-Koubou

Kāpēc datoriem skaitlis no nulles?

Kāpēc datoriem skaitlis no nulles? (Kā)


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.

Jautājums

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.

Atbilde

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.