大多数编程语言中的数组都是从0开始计数的原因是:1、历史原因;2、减少CPU指令运算;3、物理内存的地址是从0开始的。历史原因指语言出现顺序从早到晚C、Java、JavaScript。C语言数组下标是从0开始->Java也是->JavaScript也是。降低额外的学习和理解成本。
1、历史原因
语言出现顺序从早到晚C、Java、JavaScript。C语言数组下标是从0开始->Java也是->JavaScript也是。降低额外的学习和理解成本。
2、减少CPU指令运算
下标从0开始:数组寻址——arr[i] = base_address + i * type_size(1)
其中base_address为数组arr首地址,arr[0]就是偏移量为0的数组,即数组arr首地址;i为偏移量,type_size为数组类型字节数,比如int为32位,即4个字节。
下标从1开始:数组寻址——arr[i] = base_address + (i -1)* type_size(2)
比较两个计算公式可以发现公式(2)每次CPU寻址需要多一次 i-1的操作,即多了一次减法的指令运算。
对于数组这种基础数据结构,无论在哪种高级程序语言中,都是频繁间接(作为容器的基础数据结构,比如Java的ArrayList)或者直接被使用的,因此要尽量减少其消耗CPU资源。
3、物理内存的地址是从0开始的
计算机主存是多个连续字节大小的单元组成的数组,每个字节都对应少数的物理地址,名列前茅个字节的地址为0。为什么物理内存的地址从0开始呢?地址线决定了cpu能够找到多大的地址,这就是寻址能力.如果只有1根地址线, 那么只能找到0,1两个地址。如果只有2根地址线, 那么只能找到00,01,10,11四个地址。如果只有3根地址线, 那么只能找到000,001,010,011,100,101,110,111八个地址。依此论推: 能够找到的地址数 = 2^n次方(n表示地址线的个数)无论有多少根地址线,名列前茅个地址总是从0开始。
延伸阅读:
什么是编程语言?
编程语言(programming language)可以简单的理解为一种计算机和人都能识别的语言。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。
编程语言处在不断的发展和变化中,从最初的机器语言发展到如今的2500种以上的高级语言,每种语言都有其特定的用途和不同的发展轨迹。编程语言并不像人类自然语言发展变化一样的缓慢而又持久,其发展是相当快速的,这主要是计算机硬件、互联网和IT业的发展促进了编程语言的发展。
当前阶段,为了使计算机方面的软件技术获得更高的应用质量,并不断提升社会各界的信息化水平,相关领域的科研人员正在对计算机中的编程语言进行持续的完善与创新,以此来提升计算机编程语言的直观性以及易学性,使编程人员能够获得更具便捷性的编程语言,而目前应用较为广泛的编程语言包括Python﹑PHP﹑Java﹑C++﹑VB以及C语言等,不同的编程语言其在应用优势方面也各不相同,所以,在具体应用期间,需要结合自身需求,选择具有较高适应性和针对性的编程语言,以此来确保所选编程语言的优势。
文章标题:为什么大多数编程语言中的数组都是从0开始计数的,发布者:小编,转载请注明出处:https://worktile.com/kb/p/35962