为何计算机语言中的下标都是从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
相关文章
相关标签/搜索