essential.docx
《essential.docx》由会员分享,可在线阅读,更多相关《essential.docx(13页珍藏版)》请在冰豆网上搜索。
essential
高二年级计算机知识要点
(一)
一、信息的数字化
负数的表示
(1)SignedMagnitude:
如果用n个bit表示一个负数,用最左边的位表示符号,1表示负数,0表示正数。
缺点:
(1)有两个0的表示法;
(2)不能直接做加法10000001+00000010=10000011
(2)Ones’complement(反码):
要表示一个负整数k,先将其相反数-k写成二进制形式,然后对所有位都取反,就得到k的反码表示形式。
例:
00000010=210;11111101=-210
缺点:
仍有两个0。
做加法的特点:
加法需要将最高位的进位加到最低位
(3)Two’scomplement(补码):
将一个负数k先写成反码形式,然后加1。
例:
00000010=210;11111110=-210。
只有1个0,可以直接相加。
小数的表示
定点表示法:
固定小数点的位置,灵活性很差
浮点表示法:
使用科学记数法;要记录三个数量:
符号+位移量+尾数
例如:
+1000111.0101=+1.0001110101×26;总是将小数点移动到最左边的1右侧。
于是我们记录+;6;0001110101
一般采用两种标准
指数尾数符号
单精度8231
双精度11521
在VB中,单精度浮点数对应的变量称为Single;双精度浮点数对应的变量称为Double
以单精度为例说明浮点数的表示:
–最低23位为尾数(小数部分,整数部分约定总是1)
–然后8位为指数,存储为指数+127
–最高位符号位,0正1负
例子:
–8.12510=1000.0012=1.000001×1011
–尾数000001
–指数3+127=130=100000102
–符号0
–01000001000000100000000000000000
字符的表示
ASCII码:
1个字节表示一个字符,只能表示256种可能性(且最高位置为0不用),因此只能表示英语和常见符号。
Unicode:
2个字节,能表示世界上所有的语言文字。
UTF-8:
基于Unicode的一种编码,用一个字节表示英文字符,两个或三个字节表示其它语言字符。
变长编码的机制为了减少存储空间的浪费。
为了能让应用程序区分不同编码的文本文件,Unicode文本文件开头多了两个字节FFFE。
二、中央处理器和主存储器
计算机体系结构的一般理论:
(1)处理器在硬件层次上执行一个较小的功能集合,称为指令集
逻辑判断,算术运算
(2)软件/程序是基本指令的组合,完成各种应用
(3)程序(指令)和数据都被存储在存储设备中。
程序运行时候,逐条指令从存储器中读入到处理器内被执行。
(称为存储程序)
CPU=ALU(运算和逻辑单元)+控制单元
当前即将被执行的指令和数据保存在处理器内部的存储器—寄存器中;寄存器大小通常是计算机字长的大小,字长决定了
(1)计算机一次进行运算处理或传输的数据大小;
(2)支持的指令数量;(3)内存编址的空间。
主存储器:
随机存储器中随机的含义:
表示程序可以根据内存地址直接访问内存单元,而无需顺序存取。
内存中每个单元一般存储一个字节。
高速缓冲存储器(Cache)
•包含主存储器中部分内容的副本
•当CPU存取主存中内容时,先检查Cache
•如果不在Cache中,从主存中复制从需要读取的字开始的数据块到Cache中
•提高效率的原因
–局部化原理:
(执行程序过程中,在特定阶段,只是执行局部的若干条指令。
)
不同的体系结构:
•复杂指令集计算机(CISC)
–指令数较多,某些指令实现复杂的功能
•精简指令集计算机(RISC)
–指令数少,实现功能较简单
对复杂指令集计算机的批评:
硬件实现复杂;复杂指令实现功能可以用简单指令的组合取代;执行效率不理想;许多复杂指令使用频率不高。
三、二级存储器
存储器分为两部分:
存储介质:
用以保存数据的物理材料
存储设备:
从存储介质上读取或写入信息的硬件设备。
按照存储介质可以将存储器分为:
磁性存储技术;光学存储技术;固态存储技术
磁性存储介质:
通过磁化存储介质表面的可磁化物质来存储数据;在初始状态时,介质表面的可磁化particle的方向是随机的。
磁盘驱动器的读写头可以磁化这些particle使得它们朝向某个方向,用以表示0和1,而一旦磁化以后这些particle可以较长时间保持这种方向,使得磁性存储介质可以长期保存数据。
磁性存储介质包括硬盘、软盘、磁带。
硬盘的结构:
它包含若干盘片(Platters),它们以共同的速度绕一个主轴(Spindle)旋转,每个盘片上覆盖一层可磁化的物质,每个磁盘通过磁臂末端的磁头来读写,每个盘片都有一个磁头和磁臂,它们可以靠近或远离主轴,当磁头静止,盘片旋转时,磁头下方经历的的表面称为一个磁道。
在读写时候,通过主轴的进退和盘片的旋转来定位到磁盘上的特定位置。
硬盘表面的结构:
磁道;扇区
通常一个扇区包含512字节的数据。
逻辑相邻的数据通常不存放在物理上相邻的扇区,这是为了提高磁盘空间的利用率,但是会降低存取速度,因此需要对磁盘碎片进行整理(defragment)。
传统的硬盘结构划分的特点:
外道的扇区面积大,内道扇区面积小,但存储数据量都是512字节,为了更有效利用磁盘,提出Zonebitrecording技术,即外道划分出更多的扇区。
何为接口:
磁盘或其它I/O设备不能直接连接到计算机的总线上,需要有接口来清除这种障碍。
常见的外存接口有SCSI,SATA,IDE等。
数据的备份:
(1)磁带:
顺序存取,存取速度慢
(2)廉价磁盘冗余阵列(RAID:
RedundantArrayofInexpensiveDisks)
RAID0:
数据分块(并没有冗余,只是提高存取速度)
RAID1:
数据镜像
光学存储器:
表面有land和pit,具有不同的反射性质,用来表示0和1。
光学存储器的存取速度
●使用数据传输率(Kbps)为单位(千bit/每秒);
●原始的CD-ROM驱动器的传输率为150Kbps;
●2X,9X,…的含义:
对CD:
1X=150Kbps,2X=2×150Kbps=300Kbps,…
●DVD的情形,与CD有不同的数量级,1X=9×150Kbps=1350Kbps
四、软件一般理论和数据文件的组织
计算机系统的非硬件因素=软件+与软件相关联的文档和数据
对软件的分类:
(1)根据功能分类
系统软件:
面向计算机系统:
管理计算机资源,控制硬件工作;不解决生活工作的实际问题
应用软件:
面向实际问题:
提高人们的工作效率,提供娱乐等
最重要的系统软件:
操作系统
其它系统软件的例子:
⏹文件压缩工具
⏹磁盘碎片整理工具
⏹设备驱动
⏹杀毒软件
⏹程序开发环境(编译程序)
⏹控制面板中的工具
(2)根据获得途径的不同分类
免费软件
商业软件
共享软件(Shareware):
可以免费试用一段时间,之后需支付费用方能继续使用
开源软件(OpenSourceSoftware):
免费而且可以合法进行修改
开放源代码软件的例子:
OpenOffice.org(办公软件);Firefox;Linux
共享软件的例子:
WinRAR
软件许可协议(license):
软件如何被使用的法律约定。
现在通常采取的形式是EULA(End-UserLicenseAgreement;最终用户许可协议),在安装时候显示协议条文,用户同意后继续安装。
包含的一些内容
⏹使用者的限定(单个用户),何种情况下可以备份软件
⏹租借和赠予的约定
⏹反向工程的约定
⏹开发商免责声明(Asis)
数据文件的分类
文本文件:
只包含字符。
(例如:
html文件,txt文件,程序源代码)
二进制文件
⏹计算机内部格式存储的数据集合
⏹数,图象等等
⏹只有当被程序正确解释时才有意义
由数据记录集合构成的文件的组织形式
顺序文件:
顺序地存取记录;按照顺序一个接一个地存放
随机存取文件:
使用地址直接访问某条记录
有两种实现
(1)索引文件,记录的标识(主键)与地址的对应关系维护在一个索引文件中
(2)散列方法,用函数对应的方法维护记录标识与地址的关系
五、操作系统
操作系统的必要性:
应用软件不与硬件直接交互;否则,开发应用软件变得低效和困难
操作系统:
统一管理计算机软硬件资源,充分发挥计算机系统效率的系统软件
操作系统对硬件资源的分配策略:
处理器的管理:
多道程序(Multiprogramming):
I/O任务与计算任务同时被执行,一个进程在执行输入输出任务时候,须将处理器使用权交给另一个进程。
分时系统(Time-sharing):
给每个程序或用户一个时间片,轮流执行
内存管理:
面临的问题:
程序对于内存而言过大
如何解决,基于以下认识
•在一个时间段内,并非程序的所有部分都被使用(程序的局部化原理)
将部分程序存储在硬盘上,将这部分硬盘看成RAM
•虚拟内存
与虚拟内存相关的是分页文件:
将内存、虚拟内存和程序划分成为等长的分块,作为分配内存和虚拟内存的基本单位,这样的分块称为页面(Page)。
当内存中分配给一个进程的空间已满,又有新的页面需要调入时,需要将部分页面淘汰出内存。
简单的算法是先进先出(FIFO,Firstinfirstout),将在内存中驻留时间最长的页面淘汰出内存。
但这会造成Belady异常现象,即分配给一个进程的页面数增加时,缺页率反而会增加。
红色表示缺页
内存分配3个页面(缺页9次);内存分配4个页面(缺页10次)
文件管理
(1)Windows:
文件分配表(FAT);簇是分配辅存的基本单位(若干相邻扇区的组合);链表结构维护文件占用的簇和空闲簇。
(2)Unix/Linux:
索引节点表;文件分配以块为单位(某些系统上长度1KB);索引节点表记录一个文件的基本信息+块地址;文件的前10个块直接记录在它的索引节点表中;如果文件大小超过10个块,用间接索引的方法;间接块(不包含文件内容,而是包含文件块的地址)
两种不同的操作系统用户界面
命令行界面和图形界面(GraphicUserInterface)
•命令行界面:
用户与计算机系统的交互通过键入命令完成
•图形用户界面:
用户与计算机系统通过图形化的元素进行交互。
两者的比较:
可参考
主流操作系统:
(1)Linux和Unix
Unix是1971年AT&TBell实验室研发的多任务多用户操作系统。
Linux是1990年由芬兰学生LinusTorvalds开发的类Unix操作系统,是开放源代码软件。
Linux的优势是稳定和免费,缺点是相对较少的应用软件选择和使用时较高的技术要求。
(2)Windows
早期Windows是DOS的图形化操作环境;直到Windows95才成为独立的操作系统,2000年以前Windows分为两个系列,服务器操作系统使用NT内核(包括WindowsNT3.1,WindowsNT4.0,Windows2000),个人版本仍使用DOS内核(包括Windows95,98,Me)。
WindowsXP开始所有的Windows版本(无论服务器版本还是个人使用的版本)都使用NT内核。
(3)MacOS
苹果计算机上使用的操作系统,是第一个商业上取得成功的图形化界面操作系统。
六、软件工程
软件工程的目的:
克服软件开发过程中的随意性,工程化地组织和开展软件开发,确保软件的质量。
具体的做法和原则
(1)周密的分析和设计
(2)严格的项目管理(3)详细的文档支持(4)要对软件实施不断的测试
软件开发的瀑布模型:
分析,设计,实现,验证,维护
软件测试的一些原则
⏹详尽测试(测试每个可能的输入和流程图中每一条可能的路径)是不可行的
⏹第三方测试(测试不宜由负责编码的开发人员本身进行)
⏹单位,模块和系统测试
⏹等价类的划分(将输入数据划分成等价类,例如对于保存文档的子模块进行测试,可以将文件名划分为:
合法的文件名;过长的文件名;过短的文件名;包含非法字符的文件名等)
⏹边界值的分析(输入区间的边界常常容易出错)
软件测试的一些类型:
黑盒测试:
用户角度,测试产品的完整性
白盒测试:
测试具体的逻辑细节,代码层面
alpha测试:
在公司内部,由用户在模拟实际操作环境下进行的受控测试
beta测试:
开发者无法控制的环境下进行的软件现场应用。
在Beta测试中,由用户记下遇到的所有问题,定期向开发者报告。
七、计算理论
计算理论要回答的问题:
哪些问题是可求解的,哪些问题是不可求解的。
对可求解的问题,它的时间复杂度是怎样的。
算法的定义:
良好定义的逐步解决问题或完成任务的方法。
很多人认为Euclid算法是最早的非平凡算法,它通过事实gcd(m,n)=gcd(mmodn,n)来求两个数的最大公约数。
不可求解问题举例:
停机问题。
一个重复结构可能永远不会停机(结束)
死循环
x:
=1
While(x)
{
}
问题:
能否编写一个程序判断另一个程序是否会在有限时间内结束
反证其不存在:
假设存在判断停机问题的程序Test
构造另一程序Strange
分析Strange是否会停机,我们得到矛盾。
对于可求解问题,我们关心算法的时间复杂度。
影响算法的执行时间的因素包括
(1)处理器的处理能力
(2)输入规模(3)算法本身的优劣。
由于我们关心的是算法本身的性质,因此我们评价算法时将算法划分成一些基本步骤的集合(这些基本步骤在特定的机器上的执行速度是固定的),然后将基本运算的步数写成输入规模的函数,考查这个函数的增长速度。
多项式问题:
基本运算步数是输入规模的多项式函数
以当今计算机的处理速度,对于一个合理的输入规模,多项式问题都可以在合理时间内解决
例如:
对n个数进行排序
非多项式问题
基本运算步数是输入规模的指数函数
¡S=2n
¡如果输入规模为64
¡S=18,446,744,073,709,551,616
¡如果每1/1000秒执行一步
¡585000世纪
NP问题:
可在多项式时间内验证结果的问题
P问题:
可在多项式时间内求解的问题
P是NP的子集,但是否是真子集,是理论上未解决的问题。
NPC问题:
没有找到多项式时间的算法,也未证明不存在,且如果对其中一个找到多项式时间算法,那么P=NP
程序设计语言:
机器语言
汇编语言:
使用助记符,与机器指令一一对应
高级程序设计语言:
过程式模式:
C,Pascal
面向对象模式:
特点包括封装,继承和多态;C++,Java