爲何計算機語言中的下標都是從0開始的?

image.png

爲何計算機語言中的下標都是從0開始的?

  • 隨着互聯網的普及,各工種的泛碼農化的現象愈來愈明顯。對於沒有學過計算機基礎理論的小夥伴,可能會一直有一個困惑:
  • 爲何計算機語言中數據容器的下標都是從0開始的?而不是從1開始?

要找到這個問題的答案,咱們能夠先表述一下計算機在底層是如何存儲和調用數據的。

image.png

  • python中的str數據格式爲例:
  • 其實芯片裏沒有一個叫作「字符串」的存儲單元。內存本質上就是一塊大芯片,由無數的存儲單元構成,依序排列,計算機給這些盒子打上了編號。

image.png

  • 這些存儲單元很是小,咱們稱之爲字節(byte),一般只有8位(bit)。
  • 它有多小呢?它只夠表示一個字母或數字,須要2個存儲單元才能表示一個漢字。
  • 因此,若是你存儲一篇文章,會用到不少個這樣的存儲單元.

說完數據格式,咱們再來解析一個概念——存儲方法。

image.png

  • 當咱們命名一個變量時,計算機會告訴內存,接下來會有一段數據存進來,而且攜帶一些基礎的信息給計算機,而後內存就等待咱們對這個變量賦值。
  • 計算機在命名變量時,會告訴內存什麼呢?以字符串爲例:

image.png

  • 計算機首先會從內存中找一個空白的存儲單元。咱們先假定這是第100號存儲單元(後面都稱爲No.100)。
  • 肯定No.100是用來存儲sentence這個字符串的時候,計算機就會告訴內存,sentence等於No.100開始的一串字符串。

image.png

  • 咱們把sentence賦值一下,以便以後能更好的解釋:
  • 由於No.100只能有一個字節,只能存儲一個字母,因此實際存放到No.100裏的只有字母「h」,
  • 然後續的「ello word!」這些字符,分別被存放在No.101~No.111存儲單元上。

以上這些基本信息介紹完畢後,咱們能夠回到今天的主題——下標問題上了。

  • 對於內存來講,sentence就是No.100的代名詞,因此當你要調用sentence時,其實就是調用從No.100開始的字符串
  • 這裏作一個小說明:其實在No.112位置上,還會有一個「終止符」
  • 因此計算機獲取sentence的時候,能夠理解爲計算機向內存發出了這樣的一條指令:「從No.100(sentence)開始取字符,一直取到終止符爲止」。

image.png

  • 而當你使用sentence[n]這個格式的時候,計算機真實的指令是獲取「No.100(sentence) + n」存儲單元上的數據;

image.png

  • 舉例來講,sentence[6]就至關於No.100+6,也就是No.106存儲單元上的數據,也就是w
  • sentence[0]就是取No.100+0上的數據。

固然,Python是從語法上簡化了不少,讓咱們省去了不少額外的步驟。但從本質上來講,下標的表示邏輯是基於這個底層邏輯的。一通百通,但願這個帖子能幫助你們解除對下標的困惑。python


  • 感謝您一路讀到了最後,部份內容整理自網絡,侵刪
  • 若是這篇文章對您有幫助,請記得分享或點擊‘在看’這篇文章。
  • 若是對文中的內容有疑問、錯誤或有意見想告訴我,歡迎留言。
  • image.png
相關文章
相關標籤/搜索