首页 >

为什么有些编程语言的数组要从零开始算 – python – 前端,python scapy arp

python数据分析包,python 处理xml,python gui 推荐,python抓取数据登录,python随机幸运数字,python poisson,静静python,python lookup方法,宝塔运营python,python画女孩,python scapy arp为什么有些编程语言的数组要从零开始算 - python - 前端,python scapy arp目前大多数编程语言的数组下标都是从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开始计数的原因。

为什么有些编程语言的数组要从零开始算 - python - 前端,python scapy arp
  • python线下培训机构,六星教育python培训班靠谱吗 - python - 前端,python核心编程 非扫描
  • python线下培训机构,六星教育python培训班靠谱吗 - python - 前端,python核心编程 非扫描 | python线下培训机构,六星教育python培训班靠谱吗 - python - 前端,python核心编程 非扫描 ...

    为什么有些编程语言的数组要从零开始算 - python - 前端,python scapy arp
  • find函数的返回值 - python - 前端,svn python api
  • find函数的返回值 - python - 前端,svn python api | find函数的返回值 - python - 前端,svn python api ...

    为什么有些编程语言的数组要从零开始算 - python - 前端,python scapy arp
  • 智能生活真的是不可阻挡的趋势吗 - python - 前端,python 对象 相互转换
  • 智能生活真的是不可阻挡的趋势吗 - python - 前端,python 对象 相互转换 | 智能生活真的是不可阻挡的趋势吗 - python - 前端,python 对象 相互转换 ...