python全栈开发学习 01

本节内容
 
01 计算机发展史简介
 
02 计算机的组成
 
03 计算机的基本原理
 
 
01 计算机发展史简介
 
计算机(computer,是一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。由硬件系统和软件系统所组成,没有安装任何软件的计算机称为裸机。可分为超级计算机、工业控制计算机、网络计算机、个人计算机、嵌入式计算机五类,较先进的计算机有生物计算机、光子计算机、量子计算机等。

计算机发明者约翰·冯·诺依曼。计算机是20世纪最先进的科学技术发明之一,对人类的生产活动和社会活动产生了极其重要的影响,并以强大的生命力飞速发展。它的应用领域从最初的军事科研应用扩展到社会的各个领域,已形成了规模巨大的计算机产业,带动了全球范围的技术进步,由此引发了深刻的社会变革,计算机已遍及一般学校、企事业单位,进入寻常百姓家,成为信息社会中必不可少的工具。

计算机的应用在中国越来越普遍,改革开放以后,中国计算机用户的数量不断攀升,应用水平不断提高,特别是互联网、通信、多媒体等领域的应用取得了不错的成绩。1996年至2009 年,计算机用户数量从原来的630万增长至6710 万台,联网计算机台数由原来的2.9万台上升至5940万台。互联网用户已经达到3.16 亿,无线互联网有6.7 亿移动用户,其中手机上网用户达1.17 亿,为全球第一位。

计算工具的演化经历了由简单到复杂、从低级到高级的不同阶段,例如从“结绳记事”中的绳结到算筹、算盘计算尺、机械计算机等。它们在不同的历史时期发挥了各自的历史作用,同时也启发了电子计算机的研制和设计思路。

1642年法国哲学-数学家Blaise Pascal 发明了世界上第一台手摇式机械式计算机,利用齿轮传动原理制成,能做加减法

1889年,美国科学家赫尔曼·何乐礼研制出以电力为基础的电动制表机,用以储存计算资料。

1930年,美国科学家范内瓦·布什造出世界上首台模拟电子计算机。

1933年,美国数学家D.N.Lehmer造出一台电气计算机用来分解1-1000万之间的所有自然数为素数因子。

1946年2月14日,由美国军方定制的世界上第一台电子计算机“电子数字积分计算机”(ENIAC Electronic Numerical And Calculator)在美国宾夕法尼亚大学问世了。ENIAC(中文名:埃尼阿克)是美国奥伯丁武器试验场为了满足计算弹道需要而研制成的,这台计算器使用了17840支电子管,大小为80英尺×8英尺,重达28t(吨),功耗为170kW,其运算速度为每秒5000次的加法运算,造价约为487000美元。ENIAC的问世具有划时代的意义,表明电子计算机时代的到来。在以后60多年里,计算机技术以惊人的速度发展,没有任何一门技术的性能价格比能在30年内增长6个数量级。

第1代:电子管数字机(1946—1958年)

硬件方面,逻辑元件采用的是真空电子管,主存储器采用汞延迟线、阴极射线示波管静电存储器、磁鼓、磁芯;外存储器采用的是磁带。软件方面采用的是机器语言、汇编语言。应用领域以军事和科学计算为主。

特点是体积大、功耗高、可靠性差。速度慢(一般为每秒数千次至数万次)、价格昂贵,但为以后的计算机发展奠定了基础。

第2代:晶体管数字机(1958—1964年)

硬件方的操作系统、高级语言及其编译程序。应用领域以科学计算和事务处理为主,并开始进入工业控制领域。特点是体积缩小、能耗降低、可靠性提高、运算速度提高(一般为每秒数10万次,可高达300万次)、性能比第1代计算机有很大的提高。

第3代:集成电路数字机(1964—1970年)

硬件方面,逻辑元件采用中、小规模集成电路(MSI、SSI),主存储器仍采用磁芯。软件方面出现了分时操作系统以及结构化、规模化程序设计方法。特点是速度更快(一般为每秒数百万次至数千万次),而且可靠性有了显著提高,价格进一步下降,产品走向了通用化、系列化和标准化等。应用领域开始进入文字处理和图形图像处理领域。

第4代:大规模集成电路机(1970年至今)

硬件方面,逻辑元件采用大规模和超大规模集成电路(LSI和VLSI)。软件方面出现了数据库管理系统、网络管理系统和面向对象语言等。特点是1971年世界上第一台微处理器在美国硅谷诞生,开创了微型计算机的新时代。应用领域从科学计算、事务管理、过程控制逐步走向家庭。


由于集成技术的发展,半导体芯片的集成度更高,每块芯片可容纳数万乃至数百万个晶体管,并且可以把运算器和控制器都集中在一个芯片上、从而出现了微处理器,并且可以用微处理器和大规模、超大规模集成电路组装成微型计算机,就是我们常说的微电脑或PC机。微型计算机体积小,价格便宜,使用方便,但它的功能和运算速度已经达到甚至超过了过去的大型计算机。另一方面,利用大规模、超大规模集成电路制造的各种逻辑芯片,已经制成了体积并不很大,但运算速度可达一亿甚至几十亿次的巨型计算机。我国继1983年研制成功每秒运算一亿次的银河Ⅰ这型巨型机以后,又于1993年研制成功每秒运算十亿次的银河Ⅱ型通用并行巨型计算机。这一时期还产生了新一代的程序设计语言以及数据库管理系统和网络软件等。

随着物理元、器件的变化,不仅计算机主机经历了更新换代,它的外部设备也在不断地变革。比如外存储器,由最初的阴极射线显示管发展到磁芯、磁鼓,以后又发展为通用的磁盘,现又出现了体积更小、容量更大、速度更快的只读光盘(CD—ROM)。

02 计算机的组成

计算机是由硬件系统(hardware system)和软件系统(software system)两部分组成的。

传统电脑系统的硬体单元一般可分为输入单元、输出单元、算术逻辑单元控制单元记忆单元,其中算术逻辑单元和控制单元合称中央处理单元(Center Processing Unit,CPU)。

  • 电源
电源是电脑中不可缺少的供电设备,它的作用是将220V交流电转换为电脑中使用的5V、12V、3.3V直流电,其性能的好坏,直接影响到其他设备工作的稳定性,进而会影响整机的稳定性。手提电脑在自带锂电池情况下,为手提电脑提供有效电源。
  • 主板
主板是电脑中各个部件工作的一个平台,它把电脑的各个部件紧密连接在一起,各个部件通过主板进行数据传输。也就是说,电脑中重要的“交通枢纽”都在主板上,它工作的稳定性影响着整机工作的稳定性。
CPU即中央处理器,是一台计算机的运算核心和控制核心。其功能主要是解释计算机指令以及处理计算机软件中的数据。CPU由运算器、控制器、寄存器、高速缓存及实现它们之间联系的数据、控制及状态的总线构成。作为整个系统的核心,CPU也是整个系统最高的执行单元,因此CPU已成为决定电脑性能的核心部件,很多用户都以它为标准来判断电脑的档次。
  • 内存
内存又叫内部存储器或者是随机存储器(RAM),分为DDR内存和SDRAM内存,(但是SDRAM由于容量低,存储速度慢,稳定性差,已经被DDR淘汰了)内存属于电子式存储设备,它由电路板和芯片组成,特点是体积小,速度快,有电可存,无电清空,即电脑在开机状态时内存中可存储数据,关机后将自动清空其中的所有数据。 内存有DDR、DDR II、DDR III三大类,容量1-64GB。
  • 硬盘
硬盘属于外部存储器,机械硬盘由金属磁片制成,而磁片有记忆功能,所以储到磁片上的数据,不论在开机,还是关机,都不会丢失。硬盘容量很大,已达TB级,尺寸有3.5、2.5、1.8、1.0英寸等,接口有IDE、SATA、SCSI等,SATA最普遍。移动硬盘是以硬盘为存储介质,强调便携性的存储产品。市场上绝大多数的移动硬盘都是以标准硬盘为基础的,而只有很少部分的是以微型硬盘(1.8英寸硬盘等)为基础,但价格因素决定着主流移动硬盘还是以标准笔记本硬盘为基础。因为采用硬盘为存储介质,因此移动硬盘在数据的读写模式与标准IDE硬盘是相同的。移动硬盘多采用USB、IEEE1394等传输速度较快的接口,可以较高的速度与系统进行数据传输。固态硬盘用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片)组成。固态硬盘在产品外形和尺寸上也完全与普通硬盘一致但是固态硬盘比机械硬盘速度更快。
  • 声卡
声卡是组成多媒体电脑必不可少的一个硬件设备,其作用是当发出播放命令后,声卡将电脑中的声音数字信号转换成模拟信号送到音箱上发出声音。
  • 显卡
显卡在工作时与显示器配合输出图形、文字,作用是将计算机系统所需要的显示信息进行转换驱动,并向显示器提供行扫描信号,控制显示器的正确显示,是连接显示器和个人电脑主板的重要元件,是“人机对话”的重要设备之一。
  • 网卡
网卡是工作在数据链路层的网路组件,是局域网中连接计算机和传输介质的接口,不仅能实现与局域网传输介质之间的物理连接和电信号匹配,还涉及帧的发送与接收、帧的封装与拆封、介质访问控制、数据的编码与解码以及数据缓存的功能等。网卡的作用是充当电脑与网线之间的桥梁,它是用来建立局域网并连接到Internet的重要设备之一。
在整合型主板中常把声卡、显卡、网卡部分或全部集成在主板上。
英文名为“Modem”,俗称“猫”,即调制解调器,类型有内置式和外置式,有线式和无线式。调制解调器是通过电话线上网时必不可少的设备之一。它的作用是将电脑上处理的数字信号转换成电话线传输的模拟信号。随着ADSL宽带网的普及,内置式调制解调器逐渐退出了市场。
  • 光驱
英文名为“Optical Disk driver”,电脑用来读写光碟内容的机器,也是在台式机和笔记本便携式电脑里比较常见的一个部件。随着多媒体的应用越来越广泛,使得光驱在计算机诸多配件中已经成为标准配置。光驱可分为CD-ROM驱动器、DVD光驱(DVD-ROM)、康宝(COMBO)和DVD刻录机(DVD-RAM)等。读写的能力和速度也日益提升,4× 16× 32× 40× 48×。

03 计算机的基本原理

1.3  基本工作原理

(1)数制转换

10进制转换成其他的都是除以要转换成的那个数,也就是说转换成二进制的就除以2,转换成八进制的就除以8,转换成十六进制的就除以16,然后倒取余数。

不同的进位制数转化为十进制数:按权展开相加
十进制是权是10;二进制是权是2;十六进制是权是16;八进制是权是8;
例:110011(二进制数)=1*2^5+1*2^4+0*2^3+0*2^2+1*2^1+1*2^0=32+16+2+1=51
1507(八进制数)=1*8^3 + 5*8^2 + 0*8^1 + 7*8^0 = 839 
2AF5(十六进制数)=2*16^3 + A*16^2+ F*16^1 + 5*16^0 = 10997

二进制换算八进制 
将二进制数从右到左,三位一组,不够补0
例:二进制数10110111011换八进制数: 
010 110 111 011 
结果为:2673 

二进制转换十六进制 
二进制数转换为十六进制数的方法也类似,从右到左,四位一组,不够补0
如上题: 
0101 1011 1011 
结果为:5BB

(2)机器数与码制

各种数据在计算机中表示的形式称为机器数,其特点是采用二进制计数制,数的符号用01表示,小数点则隐含表示而不占位置。机器数对应的实际数值称为真值。
       机器数有无符号数和带符号数之分。无符号数表示正数,在机器数中没有符号位。对于无符号数,若约定小数点的位置在机器数的最低位之后,则是纯整数;若约定小数点的位置在机器数的最高位之前,则是纯小数。对于带符号数,机器数的最高位一晴地正负的符号位,其余位则表示数值。若约定小数点的位置在机器数的最低数值位之后,则是纯整数;若约定小数点的位置 在机器数的最高数值位之前,则是纯小数位。
        为了便于运算,带符号的机器右数可采用原码,反码和补码等不同的编码方法,机器数的这些编码方法称为码制。
1. 原码表示法
    数值X的原码记为[X]原,最高位是符号位,0表示正号,1表示负号,其余位表示数值的绝对值。
2.反码表示法
     数值X的原码记为[X]反,最高位是符号位,0表示正号,1表示负号,正数的反码和原码相同,负数的反码则是其绝对值按位求反。
3.补码表示法
     数值X的原码记为[X]补,最高位是符号位,0表示正号,1表示负号,正数的补码与其原码和反码相同,负数的补码则等于其反码的末尾加1
4.移码表示法
     .移码表示法是在数X上增加一个偏移量来定义的,常用于表示浮点数中的阶码。如果机器字长为n,在偏移2的(n-1)次方的情况下,只要将将码的符号位取反便可获得相应的移码表示。

(3)汉字编码

区位码

   为了使每一个汉字有一个全国统一的代码,1980年,我国颁布了第一个汉字编码的国家准: GB2312-80《信息交换用汉字编码字符集》基本集,这个字符集是我国中文信息处理技术的发展基础,也是目前国内所有汉字系统的统一标准。

 所有的国标汉字与符号组成一个94×94的矩阵。在此方阵中,每一行称为一个"",每一列称为一个"",因此,这个方阵实际上组成了一个有94个区(区号分别为0 194)、每个区内有94个位(位号分别为0194)的汉字字符集。一个汉字所在的区号和位号简单地组合在一起就构成了该汉字的"区位码"。在汉字的区位码中,高两位为区号,低两位为位号。

在区位码中,01-09区为682个特殊字符,16~87区为汉字区,包含6763个汉字 。其中16-55区为一级汉字(3755个最常用的汉字,按拼音字母的次序排列)56-87区为二级汉字(3008个汉字,按部首次序排列)

·  需要注意的是:区位码通常都是用十进制表示的,例如字的区位码为1947,也就说它位于19区第47个字符。

国标码

国家标准代码,简称国标码,是中华人民共和国的中文常用汉字编码集。国家标准强制标准冠以“GB”。现时中华人民共和国官方强制使用GB 18030标准,但较旧的计算机仍然使用GB 2312国标码 =区位码(16进制化--区码和位码分别进行16进制转化)+2020H

机内码

计算机只识别由01组成的代码,ASCII码是英文信息处理的标准编码,汉字信息处理也必须有一个统一的标准编码。 汉字交换码(国标码)主要用于汉字信息交换,我国国家标准局于19815月颁布了《信息交换用汉字编码字符集——基本集》,代号为GB2312-80,共对6763个汉字和682个图形字符进行了编码。

其编码原则为:汉字用两个字节表示,原则上,两个字节可以表示 256×256=65536种不同的符号,作为汉字编码表示的基础是可行的。但考虑到汉字编码与其它国际通用编码,如ASCII西文字符编码的关系,我国国家标准局采用了加以修正的两字节汉字编码方案,只用了两个字节的低7位。这个方案可以容纳128×128=16384种不同的汉字,但为了与标准ASCII码兼容,每个字节中都不能再用32个控制功能码和码值为32的空格以及127的操作码。所以每个字节只能有94个编码。这样,双七位实际能够表示的字数是:94×94=8836个。

机内码 = 国标码 + 8080H
机内码 = 区位码(16进制化--区码和位码分别进行16进制转化) + a0a0H

相互转换

内码转换为区位码

         区位码:  区码=内码高字节-0xa0

                       位码=内码低字节-0xa0

         例如:内码为:0xb9,0xfa

16进制表示的区位码:0x19,0x5a

                  其区位码(默认为10进制):2590

区位码转换为内码

        内码:  内码高字节=区码+0xa0

                  内码低字节=位码+0xa0

         例如:区位码为:2603

16进制表示的区位码:0x1a,0x03

           其内码(默认为16进制)0xba,0xa3

字模

  汉字在显示的时候,是以点阵的形式显示出来的,常见到的有16*16点阵、24*24点阵、32*32点阵。比如说16*16点阵字模如下,共256Bits,占用32 Bytes

0x00,0x00,0xf7,0x7e,0x95,0x04,0x95,0x04,0x96,0x74,0x96,0x54,0x95,0x54,0x95,0x54,0x95,0x54,0xf5,0x54,0x97,0x74,0x04,0x04,0x04,0x04,0x05,0x04,0x04,0x14,0x04,0x08

  字模显示的时候,以两个字节表示一行像素点,16行就构成了一个完整的字模。屏幕在显示的时候,1显示为亮色,0显示为背景色,这样就能把字体显示出来。

字库

  字库,就是所有汉字字模的集合。显然,在编排这些字模的时候需要一定的顺序(规则),而这个规则就是“机内码。根据机内码的汉字布局,将对应的汉字字模进行整合,形成字库文件。在使用的时候,应用程序根据汉字的机内码,从字库中找到对应的存储位置,取出字模,进行显示。机内码就是汉字在字库中的索引。

在区位码中,01-09区为682个特殊字符,16~87区为汉字区,有效汉字6768个。在制作字库的时候把特殊字符删除,只使用有效汉字区。也就是说我们从第16区的第1位开始进行字模收集,当第16区收集结束,紧接着收集第17区,直到第87区编排结束。总共收集6768个汉字,占用空间216576 Bytes

(4)CPU

CPU从逻辑上可以划分成3个模块,分别是控制器运算器内部寄存器,这三部分由CPU内部总线连接起来。如下所示:

 

控制器:控制单元是整个CPU的指挥控制中心,由指令寄存器IR(Instruction Register)、指令译码器ID(Instruction Decoder)和操作控制器OC(Operation Controller)等,对协调整个电脑有序工作极为重要。它根据用户预先编好的程序,依次从存储器中取出各条指令,放在指令寄存器IR中,通过指令译码(分析)确定应该进行什么操作,然后通过操作控制器OC,按确定的时序,向相应的部件发出微操作控制信号。操作控制器OC中主要包括节拍脉冲发生器、控制矩阵、时钟脉冲发生器、复位电路和启停电路等控制逻辑。

运算器:是运算器的核心。可以执行算术运算(包括加减乘数等基本运算及其附加运算)和逻辑运算(包括移位、逻辑测试或两个值比较)。相对控制单元而言,运算器接受控制单元的命令而进行动作,即运算单元所进行的全部操作都是由控制单元发出的控制信号来指挥的,所以它是执行部件。

内部寄存器:包括CPU片内缓存和寄存器组,是CPU中暂时存放数据的地方,里面保存着那些等待处理的数据,或已经处理过的数据,CPU访问寄存器所用的时间要比访问内存的时间短。采用寄存器,可以减少CPU访问内存的次数,从而提高了CPU的工作速度。但因为受到芯片面积和集成度所限,寄存器组的容量不可能很大。寄存器组可分为专用寄存器和通用寄存器。专用寄存器的作用是固定的,分别寄存相应的数据。而通用寄存器用途广泛并可由程序员规定其用途,通用寄存器的数目因微处理器而异。这个是我们以后要介绍这个重点,这里先提一下。

我们将上图细化一下,可以得出CPU的工作原理概括如下:

 

总的来说,CPU从内存中一条一条地取出指令和相应的数据,按指令操作码的规定,对数据进行运算处理,直到程序执行完毕为止。
   上图中我没有画总线,只是用逻辑方式对其进行呈现。原因早期Intel的微处理器,诸如8085,8086/8088CPU,普遍采用了地址总线和数据总线复用技术,即将部分(或全部)地址总线与数据总线共用CPU的一些引脚。例如8086外部地址总线有20根,数据总线复用了地址总线的前16根引脚。复用的数据总线和地址总线虽然可以少CPU的引脚数,但却引入了控制逻辑及操作序列上的复杂性。所以,自80286开始,Intel的CPU才采用分开的地址总线和数据总线。
   不管是复用还是分开,对我们理解CPU的运行原理没啥影响,上图没画总线的目的就是怕有些人太过于追求细节,一头扎下去,浮不起来,不能从宏观上藐视敌人。
   总结一下,CPU的运行原理就是控制单元在时序脉冲的作用下,将指令计数器里所指向的指令地址(这个地址是在内存里的)送到地址总线上去,然后CPU将这个地址里的指令读到指令寄存器进行译码。对于执行指令过程中所需要用到的数据,会将数据地址也送到地址总线,然后CPU把数据读到CPU的内部存储单元(就是内部寄存器)暂存起来,最后命令运算单元对数据进行处理加工。周而复始,一直这样执行下去
  

 

 

 关于一些笔记

关于编码   http://www.cnblogs.com/skynet/archive/2011/05/03/2035105.html

32位的系统最多可以使用 4 G 的内存 64位的系统可以使用16T 左右的内存。

变量的命名规则:

  01 具有描述性,见名知意

  02 由数字,字母,下划线组成

  03 不能以数字开头

  04 不可以是保留字符

  05 变量名不能是中文

  06 在python中 区分大小写

以下关键词不能是变量:

   and  as  assert  break  class  continue def  del  elif  else  except  exec  finally  for  from  global  if  import  in  is  lambda  not  or  pass  print  raise      return  try  while  with  yield

在python 2.7 中写入中文,需要在程序第一行加上

 #!-*- coding:utf-8 -*-

input 接受的所有数据都会默认当作字符串处理

if 后面必须加 : (缩进)

tab 键 != 4个空格

缩进级别必须保持一致

原文地址:https://www.cnblogs.com/root1/p/9244521.html