漫谈计算机与程序是怎样跑起来的

计算机与程序是怎样跑起来的?这确实是一个十分有趣的话题。

1 布尔代数只需要要两个符号实现,如二进制的0或1,其计算规则也十分简单。布尔代数是英国人布尔(Boole)于1847年提出来的,是数学和逻辑学的结合。

2 布尔代数可以在开关电路中实现,这是美国人香农(Shannon)在1938年提出来的,结合了数学、逻辑学、电学。

3 开关电路中的开关可以是继电器、或电子管、或晶体管。(是创建计算机最核心的逻辑元件,关系到速度、能耗、稳定性、以及由价格影响到的普及问题)

4 开关电路可以实现逻辑门电路。

5 逻辑门可以组合成半加器、加法器,由加法器可以实现其它算术和逻辑运算。

6 逻辑门组合也可以实现记忆电路,从而实现存储功能。

7 以上就是计算机实现基本的理论与硬件基础。

8 最早的计算机是专用的,通过插拔电缆和外部开关实现计算功能任务的改变。

9 1945年,美国人冯诺依曼(von Neumann)为了实现计算机全过程的自动化,减少人为在计算前和计算中的人工干预,提出了“存储程序、程序控制”的概念,认为数据和指令同等存储在存储器(内存、寄存器)中,根据编码规则解释读取,由控制器解释指令并产生控制信号,从而实现了计算机的通用性。

编码可以分为机器指令编码(组合机器指令编码来解决任务称为机器语言编程)、字符编码、图形编码、声音编码、视频编码等。

10 机器指令编码

自然,计算机的操作可以通过逻辑开关来控制,n个指令可以通过log2n个二进制数(位,逻辑开关)来表示,如一个字节(8个位)便可以表示255个机器指令。

11 数据编码之数值编码

有表示整数的补码、表示浮点数的IEEE547编码方案等。

12 数据编码之字符编码

字符需要另外一套编码规则,如ASCII、GB2312、Unicode等,用一个数字来表示一个字符(字符的显示需要另外一套编码规则来解释,这就是图形编码,后面简单解释),字符越多,需要的数字越多(还要考虑规律的问题),也就是需要的二进制位(存储空间)更多,所以如何经济地存储是需要考虑的问题,对于ASCII全码,因为只使用了一个字符,存储没什么问题,但如果一套符号体系需考虑更多的字节呢?

1个字节 1-256

2个字节 1-65536

3个字节 1-16777216

就只是理论上表示的字符数,因为要考虑规律的问题,实际用于编码的序列号要少很多,如GB2312的规则之一就是兼容ASCII,将ASCII码以外的字符的首位编码都是1。

如果编码的字符达几十万,如unicode,需要考虑的字节数可以就是4个或以上,毫无疑问,前面的字符一个字节就够,只有后面的字符才需要更多的字节,为此,又搞出了一套存储方案uft-8、uft-16、utf-32,实现等长或不等长的存储,但应有自己的规则和与unicode对应的规则。

对于字符编码,除了表示、存储、显示的问题,还有输入的问题,如果你要输入字母a,是否需要考虑其ASCII编码呢,a的ASCII编码是97,为什么不从十进制的101开始编小写字母呢,其实97的二进制数1100001比十进制的100更有规律。A的编码65也是如此(2^6=64)。ASCII可输入字符可以直接从键盘输入,其内部再做转换。

多字节编码的汉字就不行了,你又不能去记其编码后,为此又搞出来了一些输入的编码方案,如五笔,拼音输入等。

13 数据编码之图形图像编码

包括点阵表示的位图和函数表示的适量图。

13.1 位图:

13.2 矢量图:

14 声音编码

也就是音频

15 视频编码

也就是音频与图形图像的结合。

16 从机器指令到汇编指令

17 从汇编指令到高级语言指令

18 程序的编码、连接

19 程序的加载、运行

-End-

本页共38段,1822个字符,4400 Byte(字节)