当前位置: 首页 > news >正文

个人网站免费制作wordpress 用户密码

个人网站免费制作,wordpress 用户密码,wordpress类目title修改,青岛比较有名的设计公司C 语言等大多数编程语言的数组从 0 开始而不从 1 开始,有两个原因: 第一:地址计算更方便 C 语言从 0 开始的话,array[i] 的地址就正好是: (array i) 如果是从 1 开始的话,就是 (array i - 1) 多一次计…

C 语言等大多数编程语言的数组从 0 开始而不从 1 开始,有两个原因:

第一:地址计算更方便

C 语言从 0 开始的话,array[i] 的地址就正好是:

(array + i) 

如果是从 1 开始的话,就是

(array + i - 1) 

多一次计算,性能受影响,再扩展到二维数组的话 array[i][j] 从 0 开始的地址是:

(array + i * N + j) 

多整洁,而从 1 开始要变成

(array + (i - 1) * N + (j - 1)) 

更繁琐。并且用 1 开始的话,同一个地址用 “指针+偏移”寻址和用 “数组+下标” 寻址还不能统一,经常要换算,何必呢?

第二:计算机硬件系统就是从 0 开始寻址的

物理内存地址寻址,端口寻址都是从 0 开始的,比如 32 位电脑的内存,地址范围就是:

[0, 2 ^ 32 - 1]

刚好用一个 32 位整数就能表达,而如果内存从 1 开始寻址,那么 32 位电脑的地址范围就会变成:

[1, 2 ^ 32]

那么最高地址 2 ^ 32 就需要一个 33 位的整数才能表达了,纯粹浪费资源。

其他的端口地址,DMA 通道等也都遵从这个从 0 开始的原则,那么用 3 比特表示 DMA 通道的话,更好可以表达 8 个通道 (0 - 7),而从 1 开始的话,同样 3 比特就只能表达 7 个通道了(1 - 7),一样是在浪费资源。

所以贴近系统的语言自然选择遵从硬件设定,除了第一条说的寻址计算更简单外,也能和计算机系统保持一致性,同时还能统一指针寻址和数组寻址的用户体验。

Dijkstra 解释过编程语言这么做的原因只是遵从硬件设计:

The decision taken by the language specification & compiler-designers is based on the decision made by computer system-designers to start count at 0.

所以 C 语言数组从零开始,目的在于:1)性能更好;2)统一数组和指针寻址;3)遵从硬件寻址法。

除此之外还有一些理论上的原因。

第三:数学上的原因

除去数组索引外,Dijkstra 主张一切计数应该从 0 开始,并且写了一篇文章解释:

(点击 more/continue 继续)

Dijkstra: Why numbering should start at zero

他明确的批过 Fortran 和 Pascal 等从 1 开始的早期语言考虑不周:

他给出了无懈可击的理由,大概论点是,对于 2,3,4,…,12 的整数序列,有几种表述:

a)2 <= i < 13
b)1 < i <= 12
c)2 <= i <= 12
d)1 < i < 13

然后说明:

  • 对于左边 a <= x 比 a < x 的表述法更好,因为如果用 a < x 表示一个序列,你总要提供一个比第一个元素小一号的数字,不但恶心,往往不可能(存在最小的有理数,不存在最大有理数),所以 a <= x 的表述更好;
  • 对于右边 x < b 的表述比 x <= b 的表述更好,因为当 a = b 时,a <= x < b 可以表示一个空集,而 a <= x <= b 无法表示一个空集
  • 方案 a) 和方案 b) 可以一眼看出序列的长度。
  • 方案 a) 和方案 d) 更容易表述邻接的序列。

如此证明左闭右开的方案 a) a <= x < b 更适合表述表述一个序列。

Dijkstra 论证完 a <= x < b 更是更好的选择后,给出结论,长度为 N 的数组从 0 开始更好,因为 0 <= x < N 的表述比 1 <= x < N+1 更清晰。

扩展阅读:

别被忽悠了 Lua 数组真的也可以从 0 开始索引?

http://www.yayakq.cn/news/830802/

相关文章:

  • 揭阳手机网站建设专业搜索引擎seo服务商
  • 网站项目建设流程帝国cms 网站地图标签
  • 西部数据网站管理助手v3.0dw做的上传网站打不开
  • 网站备案关站双公示网站专栏建设
  • 品牌网站建设工作室响应式网页制作教程
  • 北京网站备案核验单南京门户网站制作
  • 济阳网站建设公司网站移动端适配怎么做
  • 网站建设需求怎么提沧州建设工程信息网
  • 微信端的网站开发pythonapp软件定制研发
  • 南宁企业网站制作模板公众号平台小程序
  • 石家庄网站建设案例tk免费域名注册网站
  • 如何让我们的网站新闻被百度新闻收录珠宝购物网站的建设
  • 济南网站建设推荐q479185700上快甘肃省两学一做专题网站
  • 绵阳市城乡建设和规划局网站环球旅行卡怎么用
  • 深圳交易网站建设个人博客网站建设预算
  • 做网站互联互通免费登记照制作app
  • 怎样维护公司网站烟台专业做网站公司有哪些
  • php 外贸商城网站建设定制网站平台的安全设计
  • 康桥网站建设网店logo设计图片免费
  • 常州网站建设哪儿好薇注册网站费用
  • 网站备案正常多久手机购物网站模板
  • 任务网站建设全球最新数据消息
  • 做外贸网站需要营业执照wordpress新建页面是空白的
  • 网站加搜索框广州有什么好玩的景点
  • 网站建设分为几类广州软件合作中心
  • hao爱做网站广东软文网站推广文案
  • 与网站设计相关的软件主要有微信小程序卖货怎么做
  • 郑东新区建设局网站中山 在门户网站推广
  • 蓝杉互动网站建设seo案例分析方案
  • 网站开发销售员外汇跟单社区网站开发