noip初赛复习总纲
初赛复习总纲
目录
计算机发展史
1946~1957 | 电子管 |
---|---|
1958~1964 | 晶体管 |
1965~1970 | 规模集成电路 |
1958~1964 | 超大,大规模集成电路 |
世界上第一台电子计算机"ENIAC"于1946年2月14日在美国宾夕法尼亚大学诞生,是美国人莫克利(JohnW.Mauchly)和艾克特(J.PresperEckert)发明的,主要是有大量的电子管组成
冯•诺依曼理论
1944年,美籍匈牙利数学家 冯•诺依曼 提出计算机基本结构和工作方式的设想,为计算机的诞生和发展提供了理论基础。时至今日,尽管计算机软硬件技术飞速发展,但计算机本身的体系结构并没有明显的突破,当今的计算机仍属于冯•诺依曼架构。
其理论要点如下:
- 计算机硬件设备由存储器、运算器、控制器、输入设备和输出设备5部分组成
- 存储程序思想——把计算过程描述为由许多命令按一定顺序组成的程序,然后把程序和数据一起输入计算机,计算机对已存入的程序和数据处理后,输出结果。
计算机的分类
- 专用机与通用机:早期计算机均针对特定用途而设计,具有专用性质。60年代起,开始制造兼顾科学计算、事务处理和过程控制三方面应用的通用计算机。特别是系列机的出现,标准文本的各种高级程序语言的采用,操作系统的成熟,使一种机型系列选择不同软件、硬件配置,就能满足各行业大小用户的不同需要,进一步强化了通用性。但特殊用途的专用机仍在发展,例如连续动力学系统的全数字仿真机,超微型的空间专用计算机等。
- 巨型机、大型机、中型机、小型机、微型机:计算机是以大、中型机为主线发展的。20世纪60年代末出现小型计算机,70年代初出现微型计算机,因其轻巧、价廉、功能较强、可靠性高,而得到广泛应用。70年代开始出现每秒可运算五千万次以上的巨型计算机,专门用于解决科技、国防、经济发展中的特大课题。巨、大、中、小、微型机作为计算机系统的梯队组成部分,各有其用途,都在迅速发展。
- 流水线处理机与并行处理机:在元件、器件速度有限的条件下,从系统结构与组织着手来实现高速处理能力,成功地研制出这两种处理机。它们均面向ɑiθbi=ci(i=1,2,3,…,n;θ为算符)这样一组数据(也叫向量)运算。流水线处理机是单指令数据流(SISD)的,它们用重叠原理,用流水线方式加工向量各元素,具有高加工速率。并行处理机是单指令流多数据流(SIMD)的,它利用并行原理,重复设置多个处理部件,同时并行处理向量各元素来获得高速度(见并行处理计算机系统)。流水和并行技术还可结合,如重复设置多个流水部件,并行工作,以获得更高性能。研究并行算法是发挥这类处理机效率的关键。在高级程序语言中相应地扩充向量语句,可有效地组织向量运算;或设有向量识别器,自动识别源程序中的向量成分。
一台普通主机(标量机)配一台数组处理器(仅作高速向量运算的流水线专用机),构成主副机系统,可大大提高系统的处理能力,且性能价格比高,应用相当广泛。 - 多处理机与多机系统、分布处理系统和计算机网:多处理机与多机系统是进一步发展并行技术的必由之路,是巨型、大型机主要发展方向。它们是多指令流多数据流(MIMD)系统,各机处理各自的指令流(进程),相互通信,联合解决大型问题。它们比并行处理机有更高的并行级别,潜力大,灵活性好。用大量廉价微型机,通过互连网络构成系统,以获得高性能,是研究多处理机与多机系统的一个方向。多处理机与多机系统要求在更高级别(进程)上研究并行算法,高级程序语言提供并发、同步进程的手段,其操作系统也大为复杂,必须解决多机间多进程的通信、同步、控制等问题。
分布系统是多机系统的发展,它是由物理上分布的多个独立而又相互作用的单机,协同解决用户问题的系统,其系统软件更为复杂(见分布计算机系统)。
现代大型机几乎都是功能分布的多机系统,除含有高速中央处理器外,有管理输入输出的输入输出处理机(或前端用户机)、管理远程终端及网络通信的通信控制处理机、全系统维护诊断的维护诊断机和从事数据库管理的数据库处理机等。这是分布系统的一种低级形态。
多个地理上分布的计算机系统,通过通信线路和网络协议,相互联络起来,构成计算机网络。它按地理上分布的远近,分为局部(本地)计算机网络和远程计算机网络。网络上各计算机可相互共享信息资源和软硬件资源。订票系统、情报资料检索系统都是计算机网应用的实例。 - 诺依曼机与非诺依曼机:存储程序和指令驱动的诺依曼机迄今仍占统治地位。它顺序执行指令,限制了所解问题本身含有的并行性,影响处理速度的进一步提高。突破这一原理的非诺依曼机,就是从体系结构上来发展并行性,提高系统吞吐量,这方面的研究工作正在进行中。由数据流来驱动的数据流计算机以及按归约式控制驱动和按需求驱动的高度并行计算机,都是有发展前途的非诺依曼计算机系统。
计算机的应用
- 科学计算(或称为数值计算) 早期的计算机主要用于科学计算。科学计算仍然是计算机应用的一个重要领域。如高能物理、工程设计、地震预测、气象预报、航天技术等。由于计算机具有高运算速度和精度以及逻辑判断能力,因此出现了计算力学、计算物理、计算化学、生物控制论等新的学科。
- 过程检测与控制 利用计算机对工业生产过程中的某些信号自动进行检测,并把检测到的数据存入计算机,再根据需要对这些数据进行处理,这样的系统称为计算机检测系统。特别是仪器仪表引进计算机技术后所构成的智能化仪器仪表,将工业自动化推向了一个更高的水平。
- 信息管理(数据处理) 信息管理是计算机应用最广泛的一个领域。利用计算机来加工、管理与操作任何形式的数据资料,如企业管理、物资管理、报表统计、帐目计算、信息情报检索等。国内许多机构纷纷建设自己的管理信息系统(MIS);生产企业也开始采用制造资源规划软件(MRP),商业流通领域则逐步使用电子信息交换系统(EDI),即所谓无纸贸易。
- 计算机辅助系统计算机辅助设计、制造、测试(CAD/CAM/CAT)。用计算机辅助进行工程设计、产品制造、性能测试。
- 办公自动化:用计算机处理各种业务、商务;处理数据报表文件;进行各类办公业务的统计、分析和辅助决策。
- 经济管理:国民经济管理,公司企业经济信息管理,计划与规划,分析统计,预测,决策;物资、财务、劳资、人事等管理。
- 情报检索:图书资料、历史档案、科技资源、环境等信息检索自动化;建立各种信息系统。
- 自动控制:工业生产过程综合自动化,工艺过程最优控制,武器控制,通信控制,交通信号控制。模式识别:应用计算机对一组事件或过程进行鉴别和分类,它们可以是文字、声音、图像等具体对象,也可以是状态、程度等抽象对象。
- 人工智能。 开发一些具有人类某些智能的应用系统,如计算机推理、智能学习系统、专家系统、机器人等,帮助人们学习和完成某些推理工作。
操作系统盘点
- Android
- BSD
- iOS
- Linux
- Mac OS X
- Windows
- Windows Phone
- z/OS
计算机的基本结构
计算机系统由硬件和软件两部分组成。硬件系统相当于计算机的“躯干”,是物质基础。而软件系统相当于这个“躯干”上的“灵魂”。
硬件系统由主机和外设组成。主机有中央处理器(CPU)和内存。中央处理器分别为控制器和运算器。内存分别为只读存储器(ROM),读写存储器(RAM),高速缓冲存储器(Cache)。外设有输入设备(如键盘,鼠标,扫描仪),输出设备(如显示器,打印机,音响),外存(如硬盘,软盘,光盘,优盘(闪存))。
软件系统由系统软件和应用软件组成。系统软件分别有操作系统,编译程序和解释程序,数据库管理系统。软件系统有各种字处理系统,各种软件包。
中央处理器(CPU——Central Processing Unit)
由运算器,控制器和一些寄存器组成。
- 运算器进行各种算术运算和逻辑运算
- 控制器是计算机的指挥系统
- CPU的主要性能指标是主频和字长
存储器
- 存储器的主要功能是用来保存各类程序的数据信息
- 存储器可分为主存储器和辅助存储器两类
- 主存储器(Main memory),简称主存。是计算机硬件的一个重要部件,其作用是存放指令和数据,并能由中央处理器(CPU)直接随机存取。
- 辅助储存器是指除计算机内存及CPU缓存以外的储存器,此类储存器一般断电后仍然能保存数据。常见的外存储器有硬盘、软盘、光盘、U盘等。
内存
内存(主存)是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。内存(Memory)也被称为内存储器和主存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。
内存容量同硬盘、软盘等存储器容量单位都是相同的,它们的基本单位都是字节(B),它们之间的关系是:
1PB=1024TB
1TB=1024GB
1GB=1024MB
1MB=1024KB
1KB=1024B
内存储器通常可以分为随机存储器(RAM),只读存储器(ROM)和高速缓存存储器(Cache)三种。
- RAM 是一种读写存储器,其中的内容可以根据需要随时读出,也可以随时重新写入新的信息。当断电时, RAM 中保存的信息将全部丢失。
- ROM 是一种只读存储器,其储存的信息在制作时就写入的。当计算机在运行的过程中,只能读出 ROM 中的信息,断电后, ROM 中的信息不会丢失。
- Cache 是在 CPU 与内存之间设置的一级或两级高速小容量存储器。又名高速缓存存储器。在计算机工作时,系统先将数据由外读入 RAM 中,再由 RAM 读入 Cache 中,然后 CPU 直接从 Cache 中取数据进行工作。
外存储器
外存储器:也称为辅助存储器,一般容量较大,速度比主存较慢。
- 硬盘(Hard disk):目前的硬盘大多采用了温彻斯特技术,所以又称为“温盘”;
温氏技术的特点是:将盘片、读写磁头及驱动装置精密地组装在一个密封盒里;采用接触式起停,非接触式读写的方式(磁盘不工作时,磁头停在磁盘表面的起停区,一旦加电后,磁头随着盘片旋转的气流“飞”起来,悬浮在磁盘表面,进行读写)。
软盘(Floppy Disk):目前常见的是3.5英寸/1.44 MB的软盘。
光盘存储器(CD-ROM):普通的CD-ROM,只能读,不能写; CD盘片的存储量大约是650 MB。
输入设备
•键盘(Keyboard):目前大多使用104或108键盘
•鼠标(Mouse):主要有机械型鼠标和光电型鼠标两种
•手写笔 •触摸屏 •麦克风 •扫描仪(Scanner)•视频输入设备•条形码扫描器
输出设备
•显示器(Monitor):目前主要有CRT(阴极射线管)显示器和LCD液晶显示器。
•打印机(Printer):主要有针式打印机、喷墨打印机、激光打印机。
•绘图仪 •音箱
进制转换
八进制和十进制的对应表
左八进制,右十进制
0 | 0 |
---|---|
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
5 | 5 |
6 | 6 |
7 | 7 |
10 | 8 |
11 | 9 |
12 | 10 |
二进制和十进制的对应表
左二进制,右十进制
0 | 0 |
---|---|
1 | 1 |
10 | 2 |
11 | 3 |
100 | 4 |
101 | 5 |
110 | 6 |
111 | 7 |
1000 | 8 |
1001 | 9 |
1010 | 10 |
八进制和十六进制的对应表
左八进制,右十六进制
0 | 0 |
---|---|
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
5 | 5 |
6 | 6 |
7 | 7 |
10 | 8 |
11 | 9 |
12 | 10 |
13 | 1A |
14 | 1B |
15 | 1C |
16 | 1D |
17 | 1E |
二进制和八进制的对应表
左二进制,右八进制
0 | 0 |
---|---|
1 | 1 |
10 | 2 |
11 | 3 |
100 | 4 |
101 | 5 |
110 | 6 |
111 | 7 |
1000 | 11 |
1001 | 12 |
1010 | 13 |
十进制和十六进制的对应表
左十进制,右十六进制
0 | 0 |
---|---|
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
5 | 5 |
6 | 6 |
7 | 7 |
8 | 8 |
9 | 9 |
10 | 10 |
11 | 1A |
12 | 1B |
13 | 1C |
14 | 1D |
15 | 1E |
二进制和十六进制的对应表
左二进制,右十六进制
0 | 0 |
---|---|
1 | 1 |
10 | 2 |
11 | 3 |
100 | 4 |
101 | 5 |
110 | 6 |
111 | 7 |
1000 | 8 |
1001 | 9 |
1010 | 10 |
1011 | 1A |
1100 | 1B |
1101 | 1C |
1110 | 1D |
1111 | 1E |
二进制转十进制
二进制转十进制的方法是按权展开求和。
规律:个位上的数字的次数是0,十位上的数字的次数是1,…,依次递增,而十 分位的数字的次数是-1,百分位上数字的次数是-2,…,依次递减。注意:不是任何一个十进制小数都能转换成有限位的二进制数。
【例】: 二进制1011转换成十进制是11
扩展资料: 采用二进制的原因:
(1)技术实现简单,计算机是由逻辑电路组成,逻辑电路通常只有两个状态,开关的接通与断开,这两种状态正好可以用“1”和“0”表示。
(2)简化运算规则:两个二进制数和、积运算组合各有三种,运算规则简单,有利于简化计算机内部结构,提高运算速度。
(3)适合逻辑运算:逻辑代数是逻辑运算的理论依据,二进制只有两个数码,正好与逻辑代数中的“真”和“假”相吻合。
(4)易于进行转换,二进制与十进制数易于互相转换。
(5)用二进制表示数据具有抗干扰能力强,可靠性高等优点。因为每位数据只有高低两个状态,当受到一定程度的干扰时,仍能可靠地分辨出它是高还是低。
二进制转十六进制
二进制转换成十六进制的方法是,取四合一法,只要每组4位,分别对应8、4、2、1就行了(不四够位的在最前面添0,添到够为止)
【例】:010110111011=0101,1011,1011 运算为:
0101 = 4+1 = 5
1011 = 8+2+1 = 11
1011 = 8+2+1 = 11
结果为 5BB
二进制转八进制
二进制转换成八进制的方法是,取三合一法,即从二进制的小数点为分界点,后面每三位取成一位(不够三位的在最前面添0,添到够为止)。
分好组以后,对照二进制与八进制数的对应表,将三位二进制按权相加,得到的数就是一位八进制数,然后按顺序排列,小数点的位置不变,最后得到的就是八进制数。
【例】:1011011101 = 001,011,011,101
001就是0+0+1
011是0 * 4+1 * 2+1=0+2+1
101=1 * 4+0 * 2+1=4+0+1
十进制转二进制
十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
【例】:
789/2=394 --------1
394/2=197 --------0
197/2=98 ----------1
98/2=49 ------------0
49/2=24 ------------1
24/2=12 ------------0
12/2=6 --------------0
6/2=3 ----------------0
3/2=1 ----------------1
1/2=0 ----------------1
所以 789=1100010101
十进制转八进制
十进制整数转换为八进制整数采用"除8取余,逆序排列"法。具体做法是:用八整除十进制整数,可以得到一个商和余数;再用八去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为八进制数的低位有效位,后得到的余数作为八进制数的高位有效位,依次排列起来。
【例】:
2347/8=293-----3
293/8=36--------5
36/8=4-----------4
4/8=0-------------4
所以2347(10)=4453(8)
逻辑运算
逻辑与:∧(或‘·’)
逻辑或:∨ (或‘+’)
逻辑非:┐
优先级:逻辑非>逻辑与>逻辑或,有括号按括号,无括号先按优先级,同级运算从左至右
与位运算结合优先级:逻辑非(!,┐)=按位反(~)>位移运算(<<,>>)>不等号(>=,<=)>等号(==,!=)>按位与(&)>按位异或(^)>按位或(|)>逻辑与(&&,∧)>逻辑或(||,∨)
排序算法稳定性
选择排序、快速排序(快排)、堆排序、希尔排序不稳定。
冒泡排序、归并排序、插入排序、桶排序稳定。
高级语言
计算机语言具有高级语言和低级语言之分。而高级语言又主要是相对于汇编语言而言的,它是较接近自然语言和数学公式的编程,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序。编写的程序称之为源程序。
高级语言并不是特指的某一种具体的语言,而是包括很多编程语言,如流行的
java,c,c++,C#,pascal,python,lisp,prolog,FoxPro,易语言,中文版的C语言
等等,这些语言的语法、命令格式都不相同。
高级语言与计算机的硬件结构及指令系统无关,它有更强的表达能力,可方便地表示数据的运算和程序的控制结构,能更好的描述各种算法,而且容易学习掌握。但高级语言编译生成的程序代码一般比用汇编程序语言设计的程序代码要长,执行的速度也慢。所以汇编语言适合编写一些对速度和代码长度要求高的程序和直接控制硬件的程序。高级语言、汇编语言和机器语言都是用于编写计算机程序的语言。
高级语言程序“看不见”机器的硬件结构,不能用于编写直接访问机器硬件资源的系统软件或设备控制软件。为此,一些高级语言提供了与汇编语言之间的调用接口。用汇编语言编写的程序,可作为高级语言的一个外部过程或函数,利用堆栈来传递参数或参数的地址。
面向对象的语言
C++、Java、C#、Python等是典型的面向对象语言。 Fortran和Basic不是面向对象语言。
二叉树
二叉树的三种遍历方式:
- 先序遍历:根-左-右
- 中序遍历:左-根-右
- 后序遍历:左-右-根
结论:给定中序遍历和先序遍历或后序遍历组合都可以确定这棵二叉树,但是给定先序遍历和后序遍历组合则不可确定
二叉树的特性
二叉树特例:
完全二叉树:对于每个节点,都有两个子节点
满二叉树:对于每个节点,都有两个子节点且树完全“平衡”,总节点个数为2^k-1,k∈Z
二叉树的有关公式: 一棵满二叉树:节点个数为2k-1,叶节点个数为2k-1(其中k为树的高度)
二叉树的深度均摊为log2n,其中n为节点个数(这就是treap等二叉搜索树时间复杂度的来源)
栈
栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
栈只有一个口(可出可入),先进后出
栈的操作
进栈(push),出栈(pop),判断栈的大小(sta.size()),判断栈是否为空(sta.empty())
定义一个栈 (要加头文件 #include< stack > )
stack < int > sta;
# define n 100 //栈的操作
void push ( int s[] , int * top , int * x ) //入栈
{
if ( * top == n) printf("overflow");
else {
* top ++;
s[ * top ] = * x;
}
}
void pop ( int s[] , int * y , int * top )//出栈
{
if ( * top == 0) printf("underflow");
else {
* y = s[ * top ];
* top --;
}
}
队列
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
顺序队列中的溢出现象:
- "下溢"现象:当队列为空时,做出队运算产生的溢出现象。“下溢”是正常现象,常用作程序控制转移的条件。
- "真上溢"现象:当队列满时,做进栈运算产生空间溢出的现象。“真上溢”是一种出错状态,应设法避免。
- "假上溢"现象:由于入队和出队操作中,头尾指针只增加不减小,致使被删元素的空间永远无法重新利用。当队列中实际的元素个数远远小于向量空间的规模时,也可能由于尾指针已超越向量空间的上界而不能做入队操作。该现象称为"假上溢"现象。
循环队列
在实际使用队列时,为了使队列空间能重复使用,往往对队列的使用方法稍加改进:无论插入或删除,一旦rear指针增1或front指针增1 时超出了所分配的队列空间,就让它指向这片连续空间的起始位置。自己真从MaxSize-1增1变到0,可用取余运算rear%MaxSize和front%MaxSize来实现。这实际上是把队列空间想象成一个环形空间,环形空间中的存储单元循环使用,用这种方法管理的队列也就称为循环队列。除了一些简单应用之外,真正实用的队列是循环队列。
在循环队列中,当队列为空时,有front=rear,而当所有队列空间全占满时,也有front=rear。为了区别这两种情况,规定循环队列最多只能有MaxSize-1个队列元素,当循环队列中只剩下一个空存储单元时,队列就已经满了。因此,队列判空的条件时front=rear,而队列判满的条件时front=(rear+1)%MaxSize。
图
图的分类
有/无向图
如果给图的每条边规定一个方向,那么得到的图称为有向图。在有向图中,与一个节点相关联的边有出边和入边之分。相反,边没有方向的图称为无向图。
单图
一个图如果任意两顶点之间只有一条边(在有向图中为两顶点之间每个方向只有一条边);边集中不含环,则称为单图
图的定义
图主要有以下两种定义。
二元组的定义
图G是一个有序二元组(V,E),其中V称为顶集(Vertices Set),E称为边集(Edges set),E与V不相交。它们亦可写成V(G)和E(G)。
E的元素都是二元组,用(x,y)表示,其中x,y∈V。
三元组的定义
图G是指一个三元组(V,E,I),其中V称为顶集,E称为边集,E与V不相交;I称为关联函数,I将E中的每一个元素映射到 VV 。如果e被映射到(u,v),那么称边e连接顶点u,v,而u,v则称作e的端点,u,v此时关于e相邻。同时,若两条边i,j有一个公共顶点u,则称i,j关于u相邻。
图的遍历
深度优先遍历
深度优先遍历的思想类似于树的先序遍历。其遍历过程可以描述为:从图中某个顶点v出发,访问该顶点,然后依次从v的未被访问的邻接点出发继续深度优先遍历图中的其余顶点,直至图中所有与v有路径相通的顶点都被访问完为止。
广度优先遍历
对图的广度优先遍历方法描述为:从图中某个顶点v出发,在访问该顶点v之后,依次访问v的所有未被访问过的邻接点,然后再访问每个邻接点的邻接点,且访问顺序应保持先被访问的顶点其邻接点也优先被访问,直到图中的所有顶点都被访问为止。下面是对一个无向图进行广度优先遍历的过程。
图的存储结构
二维数组邻接矩阵存储
定义 int G [101] [101]
G [i] [j]的值,表示点i到点j的边的权值,定义如下:
G [i] [j] { 1 或 权值 当 Vi 与 Vj 之间有边或弧时,取值为 1 或权值 |----| 0 或 ∝ 当 Vi 与 Vj 之间无边或弧时,取值为 0 或 ∝(无穷大)}
带符号数的机器码表示方法
带符号二进制数的表示方法:
带符号二进制数用最高位的一位数来表示符号:0表示正,1表示负。
含符号位二进制数位数 数值范围 十六进制范围表示法
8位二进制数 -128 ~ +127 80H~7FH
16位二进制数 -32768 ~ +32767 8000H~7FFFH
32位二进制数 -2147483648 ~ +2147483647 80000000H~7FFFFFFFH
符号位的表示
最常用的表示方法有原码、反码和补码。
(1)原码表示法:一个机器数x由符号位和有效数值两部分组成,设符号位为x0,x真值的绝对值|x|=x1x2x3…xn,则x的机器数原码可表示为:
[x]原= ,当x>=0时,x0=0,当x<0时,x0=1。
例如:已知:x1=-1011B,x2= +1001B,则x1,x2有原码分别是
[x1] 原=11011B,[x2]原=01001B
规律:正数的原码是它本身,负数的原码是取绝对值后,在最高位(左端)补“1”。
(2)反码表示法:一个负数的原码符号位不变,其余各位按位取反就是机器数的反码表示法。正数的反码与原码相同。
按位取反的意思是该位上是1的,就变成0,该位上是0的就变成1。即1=0,0=1
(3)补码表示法:
首先分析两个十进制数的运算:78-38=41,79+62=141
如果使用两位数的运算器,做79+62时,多余的100因为超出了运算器两位数的范围而自动丢弃,这样在做78-38的减法时,用79+62的加法同样可以得到正确结果。
模是批一个计量系统的测量范围,其大小以计量进位制的基数为底数,位数为指数的幂。如两位十进制数的测量范围是1——9,溢出量是100,模就是102=100,上述运算称为模运算,可以写作:
79+(-38)=79+62 (mod 100)
进一步写为 -38=62,此时就说 –38的补法(对模100而言)是62。计算机是一种有限字长的数字系统,因此它的运算都是有模运算,超出模的运算结果都将溢出。n位二进制的模是2n,
一个数的补码记作[x]补,设模是M,x是真值,则补码的定义如下:
例:设字长n=8位,x=-1011011B,求[x]补。
解:因为 n=8,所以模 M=28=100000000B,x<0,所以
[x]补=M+x=100000000B-1011011B=10100101B
注意:这个x的补码的最高位是“1”,表明它是一个负数。对于二进制数还有一种更加简单的方法由原码求出补码:
(1)正数的补码表示与原码相同;
(2)负数的补码是将原码符号位保持“1”之后,其余各位按位取反,末位再加1便得到补码,即取其原码的反码再加“1”:[x]补=[x]反+1。
下表列出 的8位二进制原码,反码和补码并将补码用十六进制表示。
真值 原码(B) 反码(B) 补码(B) 补码(H)
+127 0 111 1111 0 111 1111 0 111 1111 7F
+39 0 010 0111 0 010 0111 0 010 0111 27
+0 0 000 0000 0 000 0000 0 000 0000 00
-0 1 000 0000 1 111 1111 0 000 0000 00
-39 1 010 0111 1 101 1000 1 101 1001 D9
-127 1 111 1111 1 000 0000 1 000 0001 81
-128 无法表示 无法表示 1 000 0000 80
从上可看出,真值+0和-0的补码表示是一致的,但在原码和反码表示中具有不同形式。8位补码机器数可以表示-128,但不存在+128的补码与之对应,由此可知,8位二进制补码能表示数的范围是-128——+127。还要注意,不存在-128的8位原码和反码形式。
定点数和浮点数
(一)定点数(Fixed-Point Number)
计算机处理的数据不仅有符号,而且大量的数据带有小数,小数点不占有二进制一位而是隐含在机器数里某个固定位置上。通常采取两种简单的约定:一种是约定所有机器数的小数的小数点位置隐含在机器数的最低位之后,叫定点纯整机器数,简称定点整数。另一种约定所有机器数的小数点隐含在符号位之后、有效部分最高位之前,叫定点纯小数机器数,简称定点小数。无论是定点整数,还是定点小数,都可以有原码、反码和补码三种形式。
(二)浮点数(Floating-Point Number)
计算机多数情况下采作浮点数表示数值,它与科学计数法相似,把一个二进制数通过移动小数点位置表示成阶码和尾数两部分:
其中:E——N的阶码(Expoent),是有符号的整数
S——N的尾数(Mantissa),是数值的有效数字部分,一般规定取二进制定点纯小数形式。
例:1011101B=2+70.1011101,101.1101B=2+30.1011101,0.01011101B=2-1*0.1011101
浮点数的格式如下:
E0
E1E2……………En
E0
E1E2……………En
阶符 阶 尾符 尾数
浮点数由阶码和尾数两部分组成,底数2不出现,是隐含的。阶码的正负符号E0,在最前位,阶反映了数N小数点的位置,常用补码表示。二进制数N小数点每左移一位,阶增加1。尾数是这点小数,常取补码或原码,码制不一定与阶码相同,数N的小数点右移一位,在浮点数中表现为尾数左移一位。尾数的长度决定了数N的精度。尾数符号叫尾符,是数N的符号,也占一位。
例:写出二进制数-101.1101B的浮点数形式,设阶码取4位补码,尾数是8位原码。
-101.1101=-0.10111012+3
浮点形式为:
阶码0011 尾数11011101
补充解释:阶码0011中的最高位“0”表示指数的符号是正号,后面的“011”表示指数是“3”;尾数11011101的最高位“1”表明整个小数是负数,余下的1011101是真正的尾数。
例:计算机浮点数格式如下,写出x=0.0001101B的规格化形式,阶码是补码,尾数是原码。
x=0.0001101=0.110110-3
又[-3]补=[-001B]补=[1011]补=1101B
所以 浮点数形式是
1 101 0 1101000
汉字信息编码
汉字输入码
汉字输入方法大体可分为:区位码(数字码)、音码、形码、音形码。
• 区位码:优点是无重码或重码率低,缺点是难于记忆;
• 音码:优点是大多数人都易于掌握,但同音字多,重码率高,影响输入的速度;
• 形码:根据汉字的字型进行编码,编码的规则较多,难于记忆,必须经过训练才能较好地掌握;重码率低;
•音形码:将音码和形码结合起来,输入汉字,减少重码率,提高汉字输入速度。
汉字交换码
汉字交换码是指不同的具有汉字处理功能的计算机系统之间在交换汉字信息时所使用的代码标准。自国家标准GB2312-80公布以来,我国一直延用该标准所规定的国标码作为统一的汉字信息交换码。
GB2312-80标准包括了6763个汉字,按其使用频度分为一级汉字3755个和二级汉字3008个。一级汉字按拼音排序,二级汉字按部首排序。此外,该标准还包括标点符号、数种西文字母、图形、数码等符号682个。
由于GB2312-80是80年代制定的标准,在实际应用时常常感到不够,所以,建议处理文字信息的产品采用新颁布的GB18030信息交换用汉字编码字符集,这个标准繁、简字均处同一平台,可解决两岸三地间GB码与BIG5码间的字码转换不便的问题。
字形存储码
字形存储码是指供计算机输出汉字(显示或打印)用的二进制信息,也称字模。通常,采用的是数字化点阵字模。
ASCII码
ASCII码 ( American Standard Code for Information Interchange )
美国标准信息交换代码
将每个字符用7位的二进制数来表示,共有128种状态
大小字母、0—9、其它符号、控制符
‘ 0 ’ ―― 48
‘ A ’ ―― 65
‘ a ’ ―― 97
信息安全
- 计算机安全(computer security)是指防范与保护计算机系统及其信息资源在生存过程中免受蓄意攻击、人为失误和自然灾害等引起的损失和破坏。
- 计算机病毒是人类自己想像和发明出来的,它是一种特殊的程序,有着与生物病毒极为相似的特点。一是寄生性,它们大多依附在别的程序上面。二是隐蔽性,它们是悄然进入系统的,人们很难察觉。三是潜伏性,它们通常是潜伏在计算机程序中,只在一定条件下才发作的。四是传染性,它们能够自我复制繁殖,通过传输媒介蔓延。五是破坏性,轻则占用一定数量的系统资源,重则破坏整个系统。
对于计算机病毒,我们不必谈虎变色,而应采取积极的防治态度。首先,要防止“病从口入”,因为病毒不是自生的,而是外来的。另外,要用优秀的防杀病毒软件,对外来的软件和资料要进行严格的检查和杀毒。注意,防杀病毒软件需要及时更新(主要是其中的数据文件),一般每周一次,不更新基本上等于没有防杀毒功能。 - 20世纪50、60年代,黑客(hacker)曾是编程高手的代名词。后来,黑客成为一个独特的群体,他们通过各种渠道交流技艺,不少人以攻击计算机及其网络系统为乐趣。黑客们的胆大妄为已经给社会造成了很大的影响,一些黑客已经蜕变为威胁社会安全的罪犯。要防止“黑客”攻击,主要方法是加强安全措施,例如设置防火墙。防火墙是一种计算机设备,它设置在内部网络与外部网络之间,起一个隔离的作用,既可以阻止外部信息非法进入内部系统,也可以阻止内部人员非法访问外部系统。
网络
关于网络的一些定义:
所谓计算机网络,就是利用通信线路和设备,把分布在不同地理位置上的多台计算机连接起来。
计算机网络是现代通信技术与计算机技术相结合的产物。
网络中计算机与计算机之间的通信依靠协议进行。协议是计算机收、发数据的规则。
TCP/IP:用于网络的一组通讯协议。包括IP(Internet Protocol)和TCP(Transmission Control Protocol)。
TCP/IP是一组协议,包括上百个各种功能的协议,其中TCP 和IP是最核心的两个协议。TCP/IP 协议把Internet网络系统描述成具有四个层次功能的网络模型。
- 链路层:这是TCP/IP 结构的第一层,也叫网络接口层,其功能是提供网络相邻节点间的信息传输以及网络硬件和设备驱动。
- 网络层:(IP协议层)其功能是提供源节点和目的节点之间的信息传输服务,包括寻址和路由器选择等功能。
- 传输屋:(TCP 协议)其功能是提供网络上的各应用程序之间的通信服务。
- 应用层:这是TCP/IP最高层,其功能是为用户提供访问网络环境的手段,主要提供FTP、TELNET、GOPHER等功能软件。
IP协议适用于所有类型网络。TCP 协议则处理IP协议所遗留的通信问题,为应用程序提供可靠的通信连接,并能自动适应网络的变化。TCP/IP 目前成为最为成功的网络体系结构和协议规范。
Netbeui:一种非常简单的协议,MICROSOFT开发。
IPX:用于NOVELL网络。
网络的发展
计算机网络的发展过程大致可以分为三个阶段:
远程终端联机阶段:主机—终端
计算机网络阶段:计算机—计算机
网络的主要功能:
(1)资源共享
(2)信息传输
(3)分布处理
(4)综合信息服务
网络的分类
计算机网络的分类方式有很多种,可以按地理范围、拓扑结构、传输速率和传输介质等分类。
⑴按地理范围分类
①局域网LAN(Local Area Network)
局域网地理范围一般几百米到10km 之内,属于小范围内的连网。如一个建筑物内、一个学校内、一个工厂的厂区内等。局域网的组建简单、灵活,使用方便。
②城域网MAN(Metropolitan Area Network)
城域网地理范围可从几十公里到上百公里,可覆盖一个城市或地区,是一种中等形式的网络。
③广域网WAN(Wide Area Network)
广域网地理范围一般在几千公里左右,属于大范围连网。如几个城市,一个或几个国家,是网络系统中的最大型的网络,能实现大范围的资源共享,如国际性的Internet 网络。
⑵按传输速率分类
网络的传输速率有快有慢,传输速率快的称高速网,传输速率慢的称低速网。传输速率的单位是b/s(每秒比特数,英文缩写为bps)。一般将传输速率在Kb/s—Mb/s范围的网络称低速网,在Mb/s—Gb/s 范围的网称高速网。也可以将Kb/s 网称低速网,将Mb/s网称中速网,将Gb/s网称高速网。
网络的传输速率与网络的带宽有直接关系。带宽是指传输信道的宽度,带宽的单位是Hz(赫兹)。按照传输信道的宽度可分为窄带网和宽带网。一般将KHz—MHz带宽的网称为窄带网,将MHz—GHz 的网称为宽带网,也可以将kHz 带宽的网称窄带网,将MHz 带宽的网称中带网,将GHz 带宽的网称宽带网。通常情况下,高速网就是宽带网,低速网就是窄带网。
⑶按传输介质分类
传输介质是指数据传输系统中发送装置和接受装置间的物理媒体,按其物理形态可以划分为有线和无线两大类。
①有线网
传输介质采用有线介质连接的网络称为有线网,常用的有线传输介质有双绞线、同轴电缆和光导纤维。
●双绞线是由两根绝缘金属线互相缠绕而成,这样的一对线作为一条通信线路,由四对双绞线构成双绞线电缆。双绞线点到点的通信距离一般不能超过100m。目前,计算机网络上使用的双绞线按其传输速率分为三类线、五类线、六类线、七类线,传输速率在10Mbps到600Mbps之间,双绞线电缆的连接器一般为RJ-45。
●同轴电缆由内、外两个导体组成,内导体可以由单股或多股线组成,外导体一般由金属编织网组成。内、外导体之间有绝缘材料,其阻抗为50Ω。同轴电缆分为粗缆和细缆,粗缆用DB-15连接器,细缆用BNC和T 连接器。
●光缆由两层折射率不同的材料组成。内层是具有高折射率的玻璃单根纤维体组成,外层包一层折射率较低的材料。光缆的传输形式分为单模传输和多模传输,单模传输性能优于多模传输。所以,光缆分为单模光缆和多模光缆,单模光缆传送距离为几十公里,多模光缆为几公里。光缆的传输速率可达到每秒几百兆位。光缆用ST 或SC 连接器。光缆的优点是不会受到电磁的干扰,传输的距离也比电缆远,传输速率高。光缆的安装和维护比较困难,需要专用的设备。
②无线网
采用无线介质连接的网络称为无线网。目前无线网主要采用三种技术:微波通信,红外线通信和激光通信。这三种技术都是以大气为介质的。其中微波通信用途最广,目前的卫星网就是一种特殊形式的微波通信,它利用地球同步卫星作中继站来转发微波信号,一个同步卫星可以覆盖地球的三分之一以上表面,三个同步卫星就可以覆盖地球上全部通信区域。
⑷按拓扑结构分类
计算机网络的物理连接形式叫做网络的物理拓扑结构。连接在网络上的计算机、大容量的外存、高速打印机等设备均可看作是网络上的一个节点,也称为工作站。计算机网络中常用的拓扑结构有总线型、星型、环型等。
①总线拓扑结构
总线拓扑结构是一种共享通路的物理结构。这种结构中总线具有信息的双向传输功能,普遍用于局域网的连接,总线一般采用同轴电缆或双绞线。
总线拓扑结构的优点是:安装容易,扩充或删除一个节点很容易,不需停止网络的正常工作,节点的故障不会殃及系统。由于各个节点共用一个总线作为数据通路,信道的利用率高。但总线结构也有其缺点:由于信道共享,连接的节点不宜过多,并且总线自身的故障可以导致系统的崩溃。
②星型拓扑结构
星型拓扑结构是一种以中央节点为中心,把若干外围节点连接起来的辐射式互联结构。这种结构适用于局域网,特别是近年来连接的局域网大都采用这种连接方式。这种连接方式以双绞线或同轴电缆作连接线路。
星型拓扑结构的特点是:安装容易,结构简单,费用低,通常以集线器(Hub)作为中央节点,便于维护和管理。中央节点的正常运行对网络系统来说是至关重要的。
③环型拓扑结构
环型拓扑结构是将网络节点连接成闭合结构。信号顺着一个方向从一台设备传到另一台设备,每一台设备都配有一个收发器,信息在每台设备上的延时时间是固定的。
这种结构特别适用于实时控制的局域网系统。
环型拓扑结构的特点是:安装容易,费用较低,电缆故障容易查找和排除。有些网络系统为了提高通信效率和可靠性,采用了双环结构,即在原有的单环上再套一个环,使每个节点都具有两个接收通道。环型网络的弱点是,当节点发生故障时,整个网络就不能正常工作。
网络的体系结构
OSI 的七层体系结构:
应用层
表示层
会话层
运输层
网络层
数据链路层
物理层
局域网的工作方式*
通常有两种:
• 客户机/服务器(Client/Server):
提供资源并管理资源的计算机称为服务器;使用共享资源的计算机称客户机;
• 对等(Peer-to-Peer):
不使用服务器来管理网络共享资源,所以的计算机处于平等的地位。
Internet的形成与发展
又称国际互联网,规范的译名是“因特网”,指当前各国、各地区众多开发的网络连接在一起而形成的全球性网络。
• 我国Internet的发展情况:
八十年代末,九十年代初才起步。
1989年我国第一个公用分组交换网CNPAC建成运行。
• 我国已陆续建成与Internet互联的四个全国范围的公用网络:
中国公用计算机互联网(CHINANET)、中国金桥信息网(CHINAGBN)
中国教育和科研计算机网(CERNET)、中国科学技术网(CSTNET)
IP地址:
我们把整个Internet看作一个单一的、抽象的网络,所谓IP地址,就是为Internet中的每一台主机分配一个在全球范围唯一地址。IP v4地址是由32位二进数码表示的,为方便记记忆,把这32位二进制数每8个一段用“.” 隔开,再把每一段的二进制数化成十进制数,也就得到我们现在所看到的IP地址形式。
IP地址是用“.”隔开地四个十进制整数,每个数字取值为0—255。
IP地址分A、B、C、D;E五类,目前大量使用的是A、B、C三类,D类为Internet体系结构委员会IAB专用,E类保留在今后使用。
最高位1…126为A类,128…191是B类,192…223是C类。
域名 :
- 域名地址采用层次结构,一个域名一般有3-5个子段,中间用“. ”隔开。IP地址作为Internet 上主机的数字标识,对计算机网络来说是非常有效的。但对于使用者来说,很难记忆这些由数字组成的IP地址了。为此,人们研究出一种字符型标识,在Internet上采用“名称”寻址方案,为每台计算机主机都分配一个独有的“标准名称”,这个用字符表示的“标准名称”就是我们现在所广泛使用的域名(DN,domain name)。因此主机的域名和IP地址一样,也采用分段表示的方法。其结构一般是如下样式:计算机名.组织结构名.网络名.最高层域名。
顶级域名有三类:
• 国家顶级域名,如cn(中国)、us(美国)、uk(英国);
• 国际顶级域名—— int ,国际性组织可在int 下注册;
• 通用顶级域名,如:com、net、edu、gov、org、……
有了域名标识,对于计算机用户来说,在使用上的确方便了很多。但计算机本身并不能自动识别这些域名标识,于是域名管理服务器DNS(domain name system)就应运而生了。所谓的域名管理系统DNS(domain name system)就是以主机的域名来代替其在Internet 上实际的IP 地址的系统,它负责将Internet 上主机的域名转化为计算机能识别的IP 地址。从DNS 的组织结构来看,它是一个按照层次组织的分布式服务系统;从它的运行机制来看,DNS 更像一个庞大的数据库,只不过这个数据库并不存储在任一计算机上,而是分散在遍布于整个Internet上数以千计的域名服务器中而已。
通过上面的IP 地址、域名DN 和域名管理系统DNS,就把Internet 上面的每一台主机给予了唯一的定位。三者之间的具体联系过程如下:当连接网络并输入想访问主机的域名后,由本地机向域名服务器发出查询指令,域名服务器通过连接在整个域名管理系统查询对应的IP 地址,如找到则返回相应的IP 地址,反之则返回错误信息。说到这里,想必大家都明白了为什么当我们在浏览时,浏览器左下角的状态条上会有这样的信息:“正在查找xxxxxx”、“xxxxxx已经发现,正在连接xxxxxx”,其实这也就是域名通过DNS 转化为IP地址的过程。
当然域名通过DNS转化为IP地址需要等待一段时间,因为如果你所使用的域名服务器上如果没有你所需要域名的对应IP 地址,它就会向上级域名服务器查询,如此类推,直至查到结果,或返回无效信息。一般而言,这个查询过程都非常短,你很难察觉到。
Internet(译为因特网或国际互联网)的服务与工具
Internet的服务有:电子邮件、远程登陆、文件传输、信息服务等;
• 电子邮件(E-Mail):电子邮件地址格式为:
收信人邮箱名@邮箱所在主机的域名。例:heuu@qq.com ,qfiet168@yahbo.com.cn
• 远程登陆(Telnet):指通过Internet与其它主机连接。
登陆上另一主机,你就可以使用该主机对外开放的各种资源,如联机检索、数据查询。
• 文件传输(FTP):用于在计算机间传输文件。如下载软件等。全球信息网(WWW-World Wide Web):
又称万维网,是一个全球规模的信息服务系统,由遍布于全世界的数以万计的Web站点组成。
试炼
noip初赛复习总纲的更多相关文章
- noip 初赛复习重点知识点
一.进制转化 将k进制数转化为十进制数: 设k进制数为(abcd)k,则对应十进制数为 (小数同理,乘k的负幂次) 将十进制数转成k进制数: 设十进制数为x: t1=x/k,t2=x mod k t1 ...
- CSP初赛复习
初赛复习 初赛一定要过啊,否则付出的那么多都白搭了! while(1) ++csp.rp,++csp.luck,++csp.scores; 历史 2020年开始,除NOIP以外的NOI系列其他赛事(包 ...
- NOIP初赛 之 逻辑运算
NOIP初赛 之 逻辑运算 逻辑运算先掌握各种运算,注意运算符的级别比较,做题是要细心.在NOIP中一般一题,分值为1.5分. 概念介绍: 非:not ¬ 与:and ∧ 或:o ...
- NOIP初赛知识点大全-普及+提高组
NOIP初赛知识点大全-普及+提高组 https://mp.weixin.qq.com/s/vSXLDxmbBoFfZPzD8lrt3w
- PJ初赛复习日记
PA姑娘的PJ初赛复习日记 by Pleiades_Antares PJ初赛考试马上就要开始了(今年应该是10.13吧?),作为蒟蒻的我们怎么能不复习呢? 众所周知,复习方法有很多很多种-- 比如 ( ...
- 史上最全NOIP初赛知识点
CSP-J/S 第一轮知识点选讲 \(NOIP\)(全国青少年信息学奥林匹克竞赛)于2019年取消.取而代之的是由\(CCF\)推出的非专业级软件能力认证,也就是现在的\(CSP-J/S\).作为一名 ...
- NOIp初赛题目整理
NOIp初赛题目整理 这个 blog 用来整理扶苏准备第一轮 csp 时所做的与 csp 没 有 关 系 的历年 noip-J/S 初赛题目,记录了一些我从不知道的细碎知识点,还有一些憨憨题目,不定期 ...
- CSP 初赛复习 密码
CSP 初赛复习 密码是\(xj\)机房学生端密码
- NOIP初赛:完善程序做题技巧
最近写的文章好像还很多的.那么今天我们来讨论NOIP初赛的题型--完善程序.完善程序相对是比较难的题目了.全卷100分,完善程序占了大概26分,占比非常大.如果和英语考试试卷做比较,相当于首字母填空( ...
随机推荐
- js currying & js 科里化
js currying & js 科里化 var test = ( function (a){ console.log(`a2 =`, a);// 1 // console.log(`b2 = ...
- flutter 长按图片保存到手机
main.dart import 'dart:io'; import 'package:flutter/material.dart'; import 'package:http/http.dart' ...
- js 如何取消promise
1: 使用reject function hello() { let _res, _rej: any; const promise = new Promise((res, rej) => { _ ...
- 「NGK每日快讯」12.1日NGK公链第28期官方快讯!
- C++算法代码——质因数分解[NOIP2012普及组]
题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?id=1102 题目描述 已知正整数 n 是两个不同的质数的乘积,试求出较大的那个质数. 输入 ...
- 【Python】set 与 list ——如何对列表进行去重?
在Python中,形如 {1,2,3,4,5} 这样的数据类型叫做"集合",外形酷似列表list [1,2,3,4,5] 但是集合与列表有很多区别,具体表现在以下几方面: List ...
- ipv4ipv6 地址字符串表示最大长度
1 for IPV4 #define INET_ADDRSTRLEN 16 111.112.113.114 32位IPV4地址,使用10进制+句点表示时,所占用的char数组的长度为16,其中包括最后 ...
- nginx日志文件切分
定义cut_nginx_log.sh 日志文件脚本如下 #!/bin/bash#LOGS_PATH为日志存放路径LOGS_PATH=/weblog/nginx/logsYESTERDAY=$(date ...
- python实现斑马打印机网络打印
最近一个礼拜调研了下斑马打印机怎样实现网络打印. 缘起: 之前实现打印方式是直接使用USB接口连接PC,使用串口通讯提供一套打印服务,在系统界面配置相关参数,即可调用打印服务: 后来业务需求变化,现场 ...
- redis数据结构和对象一
1. SDS:简单动态字符串(simple dynamic string) Redis没有直接使用C语言的字符串,而是自己构建了一种名为简单动态字符串类型,并将SDS用作Redis的默认字符串. SD ...