为了账号安全,请及时绑定邮箱和手机立即绑定

为什么索引从‘C’中的零开始?

为什么索引从‘C’中的零开始?

C
智慧大石 2019-07-22 19:15:11
为什么索引从‘C’中的零开始?为什么数组中的索引以C中的零开始,而不是以1开头?
查看完整描述

3 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

这个问题是一年前发布的,但现在.


关于上述原因

迪克斯特拉的文章(以前在“现在删除”中引用的回答)从数学的角度来看,它是有意义的不相关在编程方面。

语言规范&编译器设计器所做的决定是基于计算机系统设计者决定从0开始计数的。


可能的原因

引用自请求和平丹尼·科恩。

对于任何b基,第一个B^N非负整数精确地表示为N数字(包括前导零)只有当编号开始于0时。

这是很容易测试的。在基地-2,采取2^3 = 8第八个号码是:

  • 8(二进制数:1000)如果我们从1开始计数
  • 7(二进制数:111)如果我们从0开始计数

111可以用3比特,同时1000将需要额外的位(4位)。


为什么这是相关的

计算机内存地址2^N细胞N比特。如果我们从1开始计数,2^N细胞需要N+1地址线。需要额外的位才能准确地访问一个地址。(1000在上述情况下。)。另一种解决方法是使最后一个地址无法访问,然后使用N地址线。

两者都是次优解,与从0开始计数相比,它将保持所有地址都是可访问的,使用N地址线!


结语

决定开始计算0,已经渗透到全数字系统,包括在它们上运行的软件,因为它使代码更容易转换为底层系统可以解释的内容。如果不是这样的话,那么机器和程序员之间就会有一个不必要的转换操作,用于每一个数组访问。它使编译更容易。



查看完整回答
反对 回复 2019-07-22
  • 3 回答
  • 0 关注
  • 327 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信