您的位置:首页 > 理论基础

为什么计算机语言中的下标都是从0开始的?

2020-12-28 20:30 686 查看

为什么计算机语言中的下标都是从
0
开始的?

  • 随着互联网的普及,各工种的泛码农化的现象越来越明显。对于没有学过计算机基础理论的小伙伴,可能会一直有一个困惑:
  • 为什么计算机语言中数据容器的下标都是从
    0
    开始的?而不是从
    1
    开始?

要找到这个问题的答案,我们可以先表述一下计算机在底层是如何存储和调用数据的。

  • python
    中的
    str
    数据格式为例:
  • 其实芯片里没有一个叫做“
    字符串
    ”的存储单元。内存本质上就是一块大芯片,由无数的存储单元构成,依序排列,计算机给这些盒子打上了编号。

  • 这些存储单元非常小,我们称之为字节(
    byte
    ),通常只有8位(
    bit
    )。
  • 它有多小呢?它只够表示一个字母或数字,需要2个存储单元才能表示一个汉字。
  • 所以,如果你存储一篇文章,会用到很多个这样的存储单元.

说完数据格式,我们再来解析一个概念——存储方法。

  • 当我们命名一个变量时,计算机会告诉内存,接下来会有一段数据存进来,并且携带一些基础的信息给计算机,然后内存就等待我们对这个变量赋值。
  • 计算机在命名变量时,会告诉内存什么呢?以字符串为例:

  • 计算机首先会从内存中找一个空白的存储单元。我们先假定这是第100号存储单元(后面都称为
    No.100
    )。
  • 确定
    No.100
    是用来存储
    sentence
    这个字符串的时候,计算机就会告诉内存,
    sentence
    等于
    No.100
    开始的一串字符串。

  • 我们把
    sentence
    赋值一下,以便之后能更好的解释:
  • 因为
    No.100
    只能有一个字节,只能存储一个字母,所以实际存放到
    No.100
    里的只有字母“
    h
    ”,
  • 而后续的“
    ello word!
    ”这些字符,分别被存放在
    No.101
    ~
    No.111
    存储单元上。

以上这些基本信息介绍完毕后,我们可以回到今天的主题——下标问题上了。

  • 对于内存来说,
    sentence
    就是
    No.100
    的代名词,所以当你要调用
    sentence
    时,其实就是调用从
    No.100
    开始的字符串
  • 这里做一个小说明:其实在
    No.112
    位置上,还会有一个“终止符”
  • 所以计算机获取
    sentence
    的时候,可以理解为计算机向内存发出了这样的一条指令:“从
    No.100
    (
    sentence
    )开始取字符,一直取到终止符为止”。

  • 而当你使用
    sentence
    这个格式的时候,计算机真实的指令是获取“
    No.100
    (
    sentence
    ) + 
    n
    ”存储单元上的数据;

  • 举例来说,
    sentence[6]
    就相当于
    No.100+6
    ,也就是
    No.106
    存储单元上的数据,也就是
    w
  • sentence[0]
    就是取
    No.100+0
    上的数据。

当然,Python是从语法上简化了很多,让我们省去了很多额外的步骤。但从本质上来说,下标的表示逻辑是基于这个底层逻辑的。一通百通,希望这个帖子能帮助大家解除对下标的困惑。

  • 感谢您一路读到了最后,部分内容整理自网络,侵删
  • 如果这篇文章对您有帮助,请记得分享或点击‘在看’这篇文章。
  • 如果对文中的内容有疑问、错误或有意见想告诉我,欢迎留言。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: