也不是所有的高级程序语言都是洳此比如Python数组下标就支持负数。
原因二:减少CPU指令运算
其中base_address为数组arr首地址arr[0]就是偏移量为0的数组,即数组arr首地址;i为偏移量type_size为数组类型字节数,比如int为32位即4个字节。
比较两个计算公式可以发现公式(2)每次CPU寻址需要多一次 i-1
的操作即多了一次减法的指令运算。
对于数組这种基础数据结构无论在哪种高级程序语言中,都是频繁间接(作为容器的基础数据结构比如Java的ArrayList)或者直接被使用的,因此要尽量減少其消耗CPU资源
原因三:物理内存的地址是从0开始的
计算机主存被抽象成由多个连续字节大小的单元组成的数组(逻辑地址),每个字節都对应唯一的物理地址第一个字节的地址为0。
原因四:计算机组成原理
无论是二进制还是十进制都要表示数字1,只有N(N进制)的0次方才能产生数字1