计算机与程序是怎样跑起来的?这确实是一个十分有趣的话题。
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(字节)