分享

后续可采用的知识点

 爱学习的动漫迷 2018-07-07

计算机内部会把所有的信息都当成数字来处理,尽管有些信息本来不是数字。用于表示字符的数字是“字符编码”,用于表示颜色的数字是“颜色编码”。

存储汉字时,字符编码不同,汉字所占用的字节数也就不同。在GBK字符编码下,一个汉字占用两个字节。而在UTF-8字符编码下,一个汉字占用三个字节。

计算机的三个根本性原则:
1、计算机是执行输入、运算、输出的机器

无论是多么复杂的功能,都是通过组合一个又一个由输入、运算、输出构成的流程单位来实现的,这是毋庸置疑的事实。如果打算用计算机做点什么的话,就要考虑该如何进行输入、如何获取输出以及进行怎样的运算才能从输入得到输出。输入、运算、输出三者必须成套出现,缺一不可。这样说的原因有几点。

首先,现在的计算机还没有发展到能通过自发的思考创造出信息的地步。因此不输入信息,计算机就不能工作。所以,输入是必不可少的。

其次,计算机不可能不执行任何运算。如果只是使输入的信息绕过运算环节直接输出,那么这就是电线而不是计算机了。可以说不进行运算,计算机也就没有什么存在的意义。

最后,输入的信息如果经过了运算,那么运算结果就必然要输出。如果不输出结果,那么这也不是计算机而只是堆积信息的垃圾箱了。因此,输出也必不可少。


2、程序时指令和数据的集合

在程序设计中,会为一组指令赋予一个名字,可以称之为“函数”“语句”“方法”“子例程”“子程序”等。这里稍微说些题外话,在计算机行业,明明是同一个东西,却可以用各种各样的术语来指代它,这种现象请诸位注意。如果只想用一个名字的话,一般情况下笔者推荐称之为函数,因为这个名字通俗易懂。

程序中的数据分为两类,一类是作为指令执行对象的输入数据,一类是从指令的执行结果得到的输出数据。在编程时程序员会为数据赋予名字,称其为“变量”。


3、计算机的处理方式有时与人们的思维习惯不同

计算机用数字表示所有信息,这就是一个很具有代表性的计算机式的处理方法,这一点也正是和人类的思维习惯最不一样的地方。例如,人们会用“蓝色”“红色”之类的词语描述有关颜色的信息。可是换作计算机的话,就不得不用数字表示颜色信息。例如,用“0,0,255”表示蓝色,用“255,0,0”表示红色,用“255,0,255”表示由蓝色和红色混合而成的紫色。不光是颜色,计算机对文字的处理也是如此。计算机内部会先把文字转换成相应的数字再做处理,这样的数字叫作“字符编码”。总之计算机会把什么都用数字来表示。


只要理解了这三大原则,即使遇到难懂的最新技术,也能轻松应对。下面就给诸位看一个具体的例子。这里摘录了一段有关.NET技术的介绍,.NET是微软公司率先提出的一种新技术。如果要正式地介绍.NET技术,就会像下面这样进行说明。

【有关.NET的说明之一】微软公司率先提出了作为新一代互联网平台的.NET技术。作为.NET核心的XML Web服务使用通用技术SOAP、XML,促使企业间的计算机协同工作。真是不好理解的一段话啊。可是如果把.NET的核心技术对照着计算机三大原则再介绍一遍的话,就会像下面这样进行说明。

【有关.NET的说明之二】计算机是执行程序的机器。程序是指令和数据的集合。为了使互联网上相互连接的计算机能通过程序协同工作,微软公司采用了SOAP以及XML规范。SOAP是关于调用指令的规范,XML则是定义数据格式的规范。只要定义出了指令和数据的规范,装有符合规范的程序的计算机自然就可以相互协作了。所谓计算机的协同工作指的是,输入到一台计算机中的数据,可以通过互联网传送到与这台计算机相连的其他计算机上执行运算,运算所输出的结果再返回给这台计算机。像这样部署在其他计算机上能执行某种运算的程序就叫作XML Web服务。



通常用Hz来表示驱动CPU运转的时钟信号的频率。1秒发出1次时钟信号就是1Hz,所以100MHz(兆赫兹)的话就是100×100万= 1亿次/秒。M(兆)代表100万。

CPU上数据总线的条数,或者CPU内部参与运算的寄存器的容量,都可以作为衡量CPU性能的比特数。在Z80 CPU中,无论是数据总线的条数还是寄存器的容量都是8比特,所以Z80 CPU是一款8比特的CPU。而在Windows个人计算机中广泛使用的Pentium(奔腾)CPU则是32比特的CPU。


1Byte=8bit,1KB=1024B,1MB=1024KB,1GB=1024MB,1TB=1024GB。8bit就是一个二进制位

为了驱动CPU运转,称为“时钟信号”的电信号必不可少。这种电信号就好像带有一个时钟,滴答滴答地每隔一定时间就变换一次电压的高低。输出时钟信号的元件叫作“时钟发生器”。时钟发生器中带有晶振,根据其自身的频率(振动的次数)产生时钟信号。时钟信号的频率可以衡量CPU的运转速度。


要让微型计算机运转起来,5V(伏特)的直流电源是必不可少的。于是还需要使用一个叫作“开关式稳压电源”的装置,将220V的交流电变成5V的直流电。


微型计算机所使用的IC属于数字IC。在数字IC中,每个引脚上的电压要么是0V、要么是+5V,通过这两个电压与其他的IC进行电信号的收发。用于给IC供电的Vcc引脚和GND引脚上的电压是恒定不变的+5V和0V,但是其他引脚上的电压,会随着计算机的操作在+5V和0V之间不断地变化。


比特是信息的最小单位,字节是收发信息的基本单位。


计算机运行原理:

输入设备从外部世界获取输入,并转换为二进制信息。

内存来保存这些信息

CPU完成所有的计算

最后,输出设备获取信息,并准转换为物理输出


计算机有很多种输入,比如计算机的键盘,手机的触摸屏,摄像头,麦克风,或者全球定位系统。

简单的一个例子:

当你按下键盘上的键时,比如字母“B”。键盘将字母转换为一个数字。

这个数字通过二进制,1和0,发送给计算机。

从这个数字开始,CPU计算出应该如何显示字母“B”的像素点。

CPU从存储中请求出一步步的指令,告诉它如何画出字母“B”。(CPU为了提高速度,在其内部固化了一些指令,但是绝大多数指令是在内存和硬盘中。因为当计算机断电的时候,内存中的信息就消失了,所以指令最初都是保存在硬盘中,当计算机运行起来后内存中则会根据当前运行的软件在内存中写入会用到的指令,CPU可以从内存中调入指令,当内存中没有的时候,还可以从硬盘中调入指令进行执行,只是这样会比较慢。)

计算机运行这些指令,然后将像素点的结果保存在内存中。

最后,像素信息同样通过二进制发送到屏幕上。

屏幕是输出设备,将二进制信号转换为有颜色的,可见的小点。

所有的这些过程发生的非常快,感觉是一瞬间完成的,实际上也真的是一瞬间,别忘了CPU的运行运转速度是多么的快,但是从你手指按键的那一刻开始,计算机显示每个字母都需要运行上千次指令。


还有其他更复杂的输出设备,它们也是从计算机获取二进制信号,在真实世界中实现不同的行为。比如播放器会播放声音,三维打印机能打印物体,再比如控制机器人的移动,汽车的引擎等等,它们的基本原理都是一样的,输入、运算、输出,只是会复杂一点。

越复杂的输入输出任务就需要越多的信息,更强的处理能力,和更多的存储。

在屏幕上打字或许很容易,但显示三维图像或录制高清电影,现代计算机通常需要多个CPU来处理所有的信息,多达数百亿比特来存储信息。


不仅是汇编语言,用C语言、Java、BASIC等编程语言编写的程序,也都需要先转换成机器语言才能被执行。机器语言有时也叫作“原生代码”(Native Code)。

内存中有多个数据存储单元。计算机用从0开始的编号标识每个存储单元,这些编号就是地址(Address)。I/O中的寄存器也可以用地址来标识。哪个寄存器对应哪个地址,取决于CPU和I/O之间的布线方式。

Flag的本意是“旗子”,这里引申为“标志”。一旦执行了算术运算、逻辑运算、比较运算等指令后,标志寄存器并不会存放运算结果的值,而是会把运算后的某些状态存储起来,例如运算结果是否为0、是否产生了负数、是否有溢出(Overflow)等。


可以使用哪种机器语言取决于CPU(也称作处理器)的种类。所谓机器语言就是只用0和1两个二进制数书写的编程语言。即便是相同的机器语言,例如01010011,只要CPU的种类不同,对它的解释也就不同。有的CPU会把它解释成是执行加法运算,有的CPU会把它解释成是向I/O输出。这就好比同样是man这个词,有的人会理解成“慢”,有的人会理解成“男人”。


在机器语言程序中,虽然到处都是0和1的组合,但是每个组合都是有特定含义的指令或数据。可是对人来说,如果只看0和1的话,恐怕很难判断各个组合都表示什么。于是就有人发明出了一种编程方法,根据表示指令功能的英语单词起一个相似的昵称,并将这个昵称赋予给0和1的组合。这种类似英语单词的昵称叫作“助记符”,使用助记符的编程语言叫作“汇编语言”。无论是使用机器语言还是汇编语言,所实现的功能都是一样的,区别只在于程序是用数字表示,还是用助记符表示。也就是说,如果理解了汇编语言,也就理解了机器语言,更进一步也就理解了计算机的原始的工作方式。


计算机的硬件有三个基本要素,CPU、内存和I/O。CPU负责解释、执行程序,从内存或I/O输入数据,在内部进行运算,再把运算结果输出到内存或I/O。内存中存放着程序,程序是指令和数据的集合。I/O中临时存放着用于与周边设备进行输入输出的数据。


寄存器的用途取决于它的类型。有的指令只能将特定的寄存器指定为操作数。举例来说,A寄存器也叫作“累加器”,是运算的核心。所以连接到它上面的导线也一定会比其他寄存器的多。F寄存器也叫作“标志寄存器”,用于存储运算结果的状态,比如是否发生了进位,数字大小的比较结果等。PC寄存器也叫作“程序指针”,存储着指向CPU接下来要执行的指令的地址。PC寄存器的值会随着滴答滴答的时钟信号自动更新,可以说程序就是依靠不断变化的PC寄存器的值运行起来的。SP寄存器也叫作“栈顶指针”,用于在内存中创建出一块称为“栈”的临时数据存储区域。


1条汇编语言的指令所对应的机器语言由多个字节构成。而且,同样是汇编语言中的1条指令,有的指令对应着1个字节的机器语言,有的指令则对应着多个字节的机器语言。汇编语言中的1条指令能转换成多少条机器语言取决于指令的种类以及操作数的个数。


在将一个2字节的数据存储到内存时,存储顺序是低8位在前、高8位在后(也就是逆序存储)。这样的存储顺序叫作“小端序”(Little Endian),与此相反,将数据由高位到低位顺序地存储到内存的存储顺序则叫作“大端序”(Big Endian)。根据CPU种类的不同,有的CPU使用大端序,有的CPU使用小端序。


比起C语言或BASIC等高级语言,汇编语言的语法简单、指令数少,说不定会更加容易学习,可是今天还在使用汇编语言的人却是凤毛麟角了。使用汇编语言编程时,因为要事无巨细地列出计算机的行为,所以程序会变得冗长繁复。因此诸位只在纸上体验汇编语言、机器语言以及手工汇编就足够了。只要具备了这些知识,即便是用C语言或BASIC等编程语言编程时,也一样能感受到计算机底层的工作方式,也就是说变得更加了解计算机了。



电脑上的exe文件都是已经编译过的

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多