一直想写C程序设计的相关文章,算是对多年来工作经验的总结,但是早前因为知识储备不够写不出来,慢慢的就淡忘了,最近在教孩子们C语言,突然想起曾经还有这个想法。
都是整数
为了研究方便,计算机科学把计算机分为若干层,当然分层的方法有很多种,每个人、每个教材都会从不同的角度,划出不同的层次。如果不考虑具体物理实现,单纯考虑编程语言可以做如下划分(肯定与不准确的地方,欢迎评论区指出):
层次 | 说明 | 具体实例 |
可视化编程 | 把一切都抽象为鼠标和键盘的操作 | word,excle |
脚本语言 | 这个不熟,如果有相关专家,欢迎在评论区留言。 | Python,ASP,JSP等 |
标记语言 | 这个也不熟,如果有相关专家,欢迎在评论区留言。 | html,xml |
命令行(操作系统) | 以 Linux 为例,一切都被抽象为文件 | Linux |
面向对象语言 | 存储和运算器被抽象为一个整体:“对象”。 其余部分,对程序员透明 | C++,JAVA |
结构化语言 | 存储抽象为数据。 运算器抽象为对数据操作。 其他部分(如:通用寄存器、协处理器等)对程序员透明。 | C语言 |
汇编语言 | 运算器地址抽象为操作码。 剩余部分(如:存储、通用寄存器、协处理器等)抽象为地址和操作数 | MIPS,LOONGARC,x86等架构的汇编指令系统 |
机器码(机器语言) | 本身就是二进制数据: 运算器抽象为地址。 剩余部分(如:存储、通用寄存器、协处理器等)抽象为地址和操作数。 | MIPS,LOONGARC,x86等架构的机器指令系统 |
计算机能存储、处理的数据都是整数,哪怕是浮点数,本质上也是通过整数来表示的。
二进制整数
由于计算机在物理上以数电为基础,但数字电路把元器件的状态划分成了两种,抽象成数字0和1,因此,计算机中所有的部件,都是以二进制的形式来抽象的。
计算机所处理的数据也存储在计算机的部件(存储)里,所以计算机中所有的数据都是二进制数据。
整数的范围
如下图,是一个4位10进制计数器,上面有一个按钮,每按一次,数字就会加 1,你一定知道,这个东西计数的最大值是 9999,不为别的,就因为这里只设计了4位数,再大,就显示不下了。
计算机内部的存储设计,跟这个计数器,有同样的困境,就是位数不能无限多。
计算机的存储设计,按照目前的工业标准,容量的最小单位是8位二进制,再大就是16位二进制、32位二进制、64位二进制。