科普:为什么计算机科学里面计数要从0开始?

本文科普了计算机科学中从0开始计数的原因,源于编程语言中数组下标的设定。文章引用了计算机科学家艾兹格·迪科斯彻的观点,分析了不同计数方式的优劣,并探讨了数组下标从0开始与内存偏移和随机访问效率的关系。此外,还提及Python之父Guido van Rossum选择0作为起始下标的原因,尤其是切片操作的优雅性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

众所周知,计算机是从0开始计数,而不是我们平时常用的从1开始计数,但你有想过为什么吗?

其实不是计算机从0开始计数而是多数编程语言中的数组都使用0作为起始下标,又是为什么呢?

经过大量的搜索查证,我终于找到了答案。

故事还要从一位真正的大佬艾兹格·迪科斯彻(Dijkstra)讲起,

艾兹格·W·迪科斯彻Dijkstra,结构程序设计之父。

  • 提出“goto有害论”;

  • 提出信号量和PV原语;

  • 解决了“哲学家聚餐”问题;

  • Dijkstra最短路径算法和银行家算法的创造者;

  • THE操作系统的设计者和开发者;

  • 第一个Algol 60编译器的设计者和实现者;

  • 与D. E. Knuth并称为我们这个时代最伟大的计算机科学家的人。

这里贴出我翻译后的大佬语录:为了表示自然数1,2,3,4...14...的子序列,一般有四种序列的表示方法:

a) 2 i < 13

b) 1 < i 12

c) 2 i 12

d) 1 < i < 13

以上的几种表达方式里,有哪一种比其他的好吗?

是的,a和b有较为明显的优点:他们上下界数值之间的差值就是这个序列的长度。在任何一种表示中,两个子序列相邻࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值