為什麼計算機從零開始計數?

今天的問答環節是由SuperUser提供的,SuperUser是Stack Exchange的一個分支,是一個由社群驅動的問答網站分組。...

為什麼計算機從零開始計數? Counting from zero is a very common practice in many computer languages, but why? Read on as we explore the phenomenon and why it is so widespread.

今天的問答環節是由SuperUser提供的,SuperUser是Stack Exchange的一個分支,是一個由社群驅動的問答網站分組。

問題

超級使用者讀者DragonLord很好奇為什麼大多數作業系統和程式語言都是從零開始計算的。他寫道:

Computers traditionally tally numerical values starting from zero. For example, arrays in C-based programming languages start from index zero.

What historical reas*** exist for this, and what practical advantages does counting from zero have over counting from one?

為什麼呢?儘管這種做法很普遍,但實施這種做法肯定有實際原因。

答案

超級使用者貢獻者Matteo提供了以下見解:

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

If you c***ider the first element the first, the computation becomes

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

Not a huge difference but it adds an unnecessary subtraction for each access.

Edited to add:

  • The usage of the array index as an offset is not a requirement but just an habit. The offset of the first element could be hidden by the system and taken into c***ideration when allocating and referencing element.
  • Dijkstra published a paper “Why numbering should start at zero” (pdf) where he explains why starting with 0 is a better choice. Starting at zero allows a better representation of ranges.

如果你想更深入地探究答案,Dijkstra的論文是一本資訊豐富的讀物。


有什麼要補充的解釋嗎?在評論中發出聲音。想從其他精通技術的Stack Exchange使用者那裡瞭解更多答案嗎?在這裡檢視完整的討論主題。

  • 發表於 2021-04-11 22:00
  • 閱讀 ( 31 )
  • 分類:網際網路

你可能感興趣的文章

列表(list)和元組(tuple)的區別

...可變的,而元組是不可變的。 目錄 1. 概述和主要區別 2. 什麼是列表 3. 什麼是元組 4. 列表與元組的相似性 5. 並列比較-列表與元組的表格形式 6. 摘要 什麼是列表(list)? 在諸如C或C++的程式語言中,陣列被用來儲存相同資料型別...

  • 發佈於 2020-10-24 03:25
  • 閲讀 ( 46 )

新的漏洞說明了更多的windows10缺陷

...它仍然是一個主要目標。讓我們考慮一下發生了什麼以及為什麼。 ...

  • 發佈於 2021-03-15 03:26
  • 閲讀 ( 83 )

什麼是cpu?它做什麼?

...中找到的CPU型別。令人沮喪的是,他們幾乎總是不告訴你為什麼這是如此重要。 ...

  • 發佈於 2021-03-17 18:33
  • 閲讀 ( 55 )

從零開始學習道德駭客與這個免費電子書(價值23美元)

... 使用伺服器端和客戶端攻擊入侵和控制遠端計算機。 遠端控制一個被駭客攻擊的系統,並利用它攻擊其他系統。 發現、利用和防止許多web應用程式漏洞,如XSS和SQL注入。 ...

  • 發佈於 2021-03-20 04:52
  • 閲讀 ( 56 )

如何用java編寫for迴圈

... 我們的第一個迴圈是計算我們排了多少行。迴圈執行三次後,它將停止。 ...

  • 發佈於 2021-03-29 11:52
  • 閲讀 ( 59 )

什麼是beos,為什麼人們喜歡它?

...功能在大多數現代作業系統的BeOS級別上仍然沒有實現。 為什麼beos失敗了? 憑藉其備受讚譽的技術和成功的近距離磨合,BeOS幾乎是痛苦的技術假設場景的教科書案例。最著名的是,1996年,蘋果提出收購Be及其智慧財產權,意圖...

  • 發佈於 2021-04-01 10:49
  • 閲讀 ( 44 )

如何在windows10中重置或清除資料使用

...能希望刪除這些詳細資訊,然後從internet服務提供商開始計算新月份的資料的那一天開始重新計算。 為此,請進入“設定”>“網路和網際網路”>“資料使用”。您可以按Windows+I從Windows 10中的任何位置開啟設定應用程式。 ...

  • 發佈於 2021-04-04 08:58
  • 閲讀 ( 38 )

什麼是二進位制,為什麼計算機使用它?

...樣使用0-9,也使用字母A到F來表示額外的六位數字。 那麼為什麼計算機使用二進位制呢? 簡而言之:硬體和物理定律。計算機中的每一個數字都是一個電訊號,在計算機的早期,電訊號很難精確地測量和控制。只有區分由負電...

  • 發佈於 2021-04-04 09:44
  • 閲讀 ( 42 )

如何從零開始擦除mac並重新安裝macos

...,在恢復模式下執行此操作與在macOS中執行此操作並沒有什麼不同。 要開始,請單擊磁碟實用程式選項。 根據您啟動恢復模式的方式,您可能會看到立即啟動磁碟應用工具的選項,如上所示。如果沒有,您可以在選單欄中...

  • 發佈於 2021-04-08 02:49
  • 閲讀 ( 36 )

為什麼計算機上的每個使用者都應該有自己的使用者帳戶

...、Linux,甚至Android平板電腦的新的多使用者帳戶功能。 為什麼不只用一個賬戶呢? 如果您在計算機上使用單個使用者帳戶,則每個人都將共享相同的應用程式設定、檔案和系統許可權。 應用程式設定:使用單個使用者帳戶時...

  • 發佈於 2021-04-09 03:33
  • 閲讀 ( 43 )
iv7875332
iv7875332

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦