首页后端开发Python为什么有些编程语言的数组要从零开始算

为什么有些编程语言的数组要从零开始算

时间2023-06-03 06:23:02发布访客分类Python浏览303
导读:为什么有些编程语言的数组要从零开始算?目前大多数编程语言的数组下标都是从0开始计算的,这可能不符合人们从正整数开始计数的习惯, 不过计算机世界里从0开始计数有它的历史原因……什么是数组数组是在程序设计中,为了处理方便, 把具有相同类型的若干...

为什么有些编程语言的数组要从零开始算?

目前大多数编程语言的数组下标都是从0开始计算的,这可能不符合人们从正整数开始计数的习惯, 不过计算机世界里从0开始计数有它的历史原因……什么是数组数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按无序的形式组织起来的一种形式。下图表示了一个长度为10的一维数组在内存中的存储状态。很明显,如果需要访问一个数组的某一个元素,我们通常需要知道它的下标/索引(indice)。如何访问数组元素可以简单理解为,访问数组元素实际上是读取某个内存地址的值。从上图可以看到,数组在内存中是连续的,每个元素占用了同样大小的空间,这样,我们只需要知道数组第1个元素的内存地址,通过加上相应的偏移量,就能拿到某个数组元素的内存地址。先看看如果第1个元素下标是1怎样定位其它元素:我们假设第1个元素的地址(首地址)为a,每个数组元素的大小为s,那么第2个元素下标为2,地址=a + (2-1)*s,第3个元素下标为3,地址=a + (3-2)*s,第n个元素下标为n,地址=a + (n-1)*s。再看看如果第1个元素下标是0是怎样:第2个元素下标为1,地址=a+1*s,第n个元素下标为n-1,地址=a+n*s。比较一下两个式子:第1个元素下标为1: 第n个元素地址 = a+(n-1)*s第1个元素下标为0: 第n个元素地址 = a + n * s看出区别了吗?如果用0作为下标,每次在定位元素地址进,少了一次减法运算!为什么要拿0作为第1个元素的下标你可能觉得,下标从1开始计算仅仅多了一次减法运算,可是看一看计算机的发展历史,你会明白为什么在早期的编程语言设计中会那么在意在一次减法运算。从上世纪60年代到今天的近60年间,计算设备的计算能力达到了1T倍(1万亿倍)的增长,过去那些看来相当牛掰的超级计算机,现在却连一台手机甚至一块手表都比不上。从下面的图中可以看到,1985年的Cray-2超级计算机计算能力与一台iPhone4相当,而一只iWatch的计算能力又相当于两台iPhone4。数组是计算机程序中使用非常频繁的一种数据结构,如果每次下标寻址都能节省一次运算,在早期计算机系统中程序的运行速度可能会有非常显著的提高,这样才能充分的利用当时昂贵的计算资源。出于习惯和兼容考虑,现代编程语言也把这一设计思想延续了下来,这也是为什么计算机世界里通常从0开始计数的原因。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 为什么有些编程语言的数组要从零开始算
本文地址: https://pptw.com/jishu/59278.html
opencv进行简单人脸识别 如何使用linux下gdb来调试python程序

游客 回复需填写必要信息