Zašto računare računaju od nula?

Sadržaj:

Zašto računare računaju od nula?
Zašto računare računaju od nula?

Video: Zašto računare računaju od nula?

Video: Zašto računare računaju od nula?
Video: How to Import Contacts from Excel Sheet to Android Phone | Transfer Contacts from Excel to Android - YouTube 2024, Travanj
Anonim
 Brojanje od nule vrlo je uobičajena praksa na mnogim računalnim jezicima, ali zašto? Pročitajte kako istražujemo fenomen i zašto je tako rasprostranjena.
Brojanje od nule vrlo je uobičajena praksa na mnogim računalnim jezicima, ali zašto? Pročitajte kako istražujemo fenomen i zašto je tako rasprostranjena.

Današnja pitanja i odgovori nam se javljaju zahvaljujući SuperUseru - podjele Stack Exchange-a, zajednice-driven grupiranja Q & A web stranica.

Pitanje

SuperUser čitač DragonLord znatiželjan je zašto se većina operacijskih sustava i programskih jezika računaju od nule. Piše:

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?

Zašto doista? Kao što je široko rasprostranjena kao i praksa, sigurno postoje praktični razlozi za njegovu provedbu.

Odgovor

SuperUser suradnik Matteo nudi sljedeće uvide:

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

Ako najprije uzmete prvi element, računanje postaje

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

Nije velika razlika, ali dodaje nepotrebnu oduzimanju za svaki pristup.

Uredeno za dodavanje:

  • Upotreba indeksa polja kao offset nije uvjet, već samo navika. Razmak prvog elementa može biti skriven od strane sustava i uzeti u obzir prilikom dodjele i reference elementa.
  • Dijkstra je objavio rad "Zašto bi brojanje trebalo početi na nuli" (pdf) gdje objašnjava zašto je počevši s 0 bolji izbor. Polazeći od nula omogućava bolju zastupljenost raspona.

Ako želite dublje ukrcati u odgovor, Dijkstraov tekst je informativno čitanje.

Imate li nešto za objašnjenje? Zvuči u komentarima. Želite li pročitati više odgovora od drugih tehnoloških korisnika Stack Exchangea? Pogledajte ovdje cijelu raspravu.

Preporučeni: