计算机基础知识
【计蒜客 暑假提高组初赛集训 】
计算机基础知识
Introduction
接下来我们需要对 CCF-NOI
系列赛事的全名,它的历史和一些简单信息进行一些了解。
通常考察如下知识点:
-
\(NOI\) 及相关活动的历史
1984 年,*同志在参加上海微电子技术应用汇报展览会时,提出了“学计算机要从娃娃抓起”,于是在当年,教育部和中国科协委托 中国计算机学会(CCF) 举办了全国青少年计算机奥林匹克竞赛(简称:NOI),直到今天。
1995 年,全国青少年计算机奥林匹克联赛(简称:NOIP)开始举办。2019 年,CCF-CSP 计算机非专业组别能力认证(简称:CSP-J/S)开始举办。
接下来我们来看几道与此相关的初赛真题。
【例题1】
[单选] 全国信息学奥林匹克竞赛的官方网站为参与信息学竞赛的老师同学们提供相关的信息和资源,请问全国信息学奥林匹克竞赛官方网站的网址是:
【例题2】
[单选] 在参加 NOI 系列竞赛过程中,下面哪一种行为是 不被严格禁止的:
计算机的历史
图灵机
所谓的图灵机就是指一个抽象的机器,它有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的颜色。有一个机器头在纸带上移来移去。机器头有一组内部状态,还有一些固定的程序。在每个时刻,机器头都要从当前纸带上读入一个方格信息,然后结合自己的内部状态查找程序表,根据程序输出信息到纸带方格上,并转换自己的内部状态,然后进行移动。
对于任意一个图灵机,因为它的描述是有限的,因此我们总可以用某种方式将其编码为字符串。我们用 表示图灵机 M 的编码。
我们可以构造出一个特殊的图灵机,它接受任意一个图灵机 M 的编码 ,然后模拟 M 的运作,这样的图灵机称为通用图灵机(Universal Turing Machine)。现代电子计算机其实就是这样一种通用图灵机的模拟,它能接受一段描述其他图灵机的程序,并运行程序实现该程序所描述的算法。
冯·诺依曼结构
数学家冯·诺依曼提出了计算机制造的三个基本原则,即采用二进制逻辑、程序存储执行以及计算机由五个部分组成(运算器、控制器、存储器、输入设备、输出设备),这套理论被称为冯·诺依曼体系结构。
世界上第一台电子计算机
世界上第一台通用计算机 ENIAC 于 1946 年 2 月 14 日在美国宾夕法尼亚大学诞生。
美国国防部用它来进行弹道计算。它是一个庞然大物,用了 1800018000 个电子管,占地 150150 平方米,重达 3030 吨,耗电功率约 150150 千瓦,每秒钟可进行 50005000 次运算。
计算机时代划分
- 第一代:1946 到 1958 年,这个时期构成计算机的主要逻辑元件是电子管,称为电子管时代。
- 第二代:1959 到 1964 年。第二代计算机用晶体管代替了体积庞大的电子管,人们将这一时代称为晶体管计算机时代。
- 第三代:1965 到 1970 年,此阶段以中、小规模集成电路作为计算机的逻辑元件。这一时代称为集成电路计算机时代。
- 第四代:从 1970 年至今,随着集成电路集成度的不断提高,采用大规模、超大规模集成电路作逻辑元件, 这一时代称为大规模集成电路计算机时代
- 第五代:智能计算机的概念是日本政府于 \(1982\) 年提出的,目标是实现智能计算机。这一目标至今尚未能直接促进计算机的更新换代。
计算机界奖项
计算机界最高奖项:图灵奖,由 美国计算机协会(ACM) 于 1966 年 设立,专门奖励那些对计算机事业作出重要贡献的个人。其名称取自计算机科学的先驱、英国科学家艾伦·麦席森·图灵(Alan M. Turing)。目前唯一的华人图灵奖得主为:姚期智。
王选 奖:中国计算机学会王选奖是中国计算机学会设立的奖项,为了纪念王选院士为中国计算机事业做出的非凡贡献。
诺贝尔 奖:诺贝尔奖本身和计算机是无关的。诺贝尔奖分为 物理学奖、化学奖、和平奖、生理学或医学奖 和 文学奖。
【例题】
[单选] 在下列关于图灵奖的说法中,不正确的是:
姚期智
计算机硬件组成
主板:安装了组成计算机的主要电路系统,一般有 BIOS 芯片、I/O 控制芯片、键和面板控制开关接口、指示灯插接件、扩充插槽、主板及插卡的直流电源供电接插件等元件。
CPU:又称中央处理器,是一个集成电路模块,主要是解释计算机指令以及处理计算机软件中的数据。一条指令的功能往往是由计算机中的部件执行一系列的操作来实现的,CPU 要根据指令的功能,产生相应的操作控制信号,发给相应的部件,从而控制这些部件按指令的要求进行动作。
- 由 运算器、控制器 和一些 寄存器 组成
- 运算器进行各种算术 运算 和逻辑运算;
- 控制器是计算机的 指挥系统
内存:内存用于临时存储数据,一般采用半导体存储单元,包括随机存储器(RAM),只读存储器(ROM),以及高速缓存(CACHE)。
- RAM 是其中最重要的存储器,断电时数据会丢失。
- ROM 则是只可以读取,不可写入,断电时数据也不会丢失。例如,BIOS 信息就是存储在 ROM 中,注意 ROM 和硬盘是不同的哦。
- CACHE 则可读写而且速度比 RAM 更快,造价也更高。
硬盘(外存):硬盘用于存放永久数据,断电数据也不会丢失。
I/O设备:可以与计算机进行数据传输的硬件。
- 输入/输出:是一切操作、程序或设备与计算机之间发生的数据传输过程。
- 常见的输入设备有:键盘、鼠标、扫描仪、手写笔、触摸屏、麦克风、条形码扫描器。
- 常见的输出设备有:显示器、打印机、绘图仪、音箱。
【例题4】
[单选] 在以下各项中,[ ] 不是 CPU 的组成部分:
【例题5】
[单选] 现有一段 \(8\) 分钟的视频文件,它的播放速度是每秒 \(24\) 帧图像,每帧图像是 一幅 分辨率为 \(2048\times 1024\) 像素的 \(32\) 位真彩色图像。请问要存储这段原始无压缩视频,需要多大的存储空间?
计算机软件
什么是操作系统?我们平时了解过的 Windows 10,以及手机上的 iOS、Android,都是操作系统。当然,还有一些不为大家熟知、但今后大家会经常与之打交道的操作系统——Linux。
操作系统是我们控制计算机的重要工具,是用来管理计算机软件与硬件资源的 计算机程序。
Windows 和 Linux
CSP 第一轮对这一部分的考察主要是 Linux 操作系统家族成员。常见的有:Linux、Ubuntu、Debian、CentOS** 等。
计算机中的软件,分为系统软件(操作系统)和应用软件。应用软件指的就是我们日常使用的软件,比如 Word、Excel、Photoshop,乃至 C++ 都是应用软件。
操作系统也是软件,不过操作系统作为用户和计算机的接口,可以管理计算机中的所有硬件和软件资源,可以称之为软件“王中王”。
32 位和 64 位
有些同学之前应该看到过,我们的系统有 32 位、64 位之分。那这个又是什么意思呢?
32 位系统和 64 位系统分别是用于运行在 32 位和 64 位 CPU 之上的操作系统,而这里的 32 和 64,表示的是 CPU 一次性可以处理的二进制位数。例如 32 位 CPU 一次性可以处理 32bits = 4Bytes,而 64 位系统一次性可以处理 8Bytes。
在操作系统中,我们所有处理中的数据通常存储在内存中,而内存地址的范围就取决于 CPU 的位数。对于 32 位系统,最多有 2^32232 种不同的地址,因此可以推算出对于 32 位系统而言的内存上限为:
这个大小在当初设计 CPU 的时候也许是足够的,但对于现在的系统而言已经不够大了(由于内存中有一些区域无法被应用软件使用,实际可用内存不到 4GB),也因此现在的新款电脑均为 64 位 CPU 和 64 位操作系统。
计算机网络基础
-
OSI 七层网络协议
由上之下依次是:
- 应用层:与其它计算机进行通讯的一个应用,它是对应应用程序的通信服务的。包括 HTTP 等面向用户的协议。
- 表示层
- 会话层
- 传输层:这层的功能包括是否选择差错恢复协议还是无差错恢复协议,及在同一主机上对不同应用的数据流的输入进行复用,还包括对收到的顺序不对的数据包的重新排序功能。主要有 TCP 和 UDP。
- 网络层:这层对端到端的包传输进行定义,它定义了能够标识所有结点的逻辑地址,还定义了路由实现的方式和学习的方式。主要协议是 IP 协议。
- 数据链路层:它定义了在单个链路上如何传输数据。
- 物理层:OSI 的物理层规范是有关传输介质的特性。
由国际标准化组织 ISO 于 1981 年正式推荐规范。
除了 OSI 七层协议以外,还有一个 TCP/IP 五层协议的版本:物理层、数据链路层、网络层、传输层、应用层。实际应用中,以五层协议的版本为主。
IP 地址
这里只讨论 IPv4 相关的知识,IPv4 是 32 位的地址,而 IPv6 是 128 的位的地址。
IP 地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。
给因特网上的每台计算机和其它设备都规定了一个唯一的地址,叫做“IP地址”。由于有这种唯一的地址,才保证了用户在连网的计算机上操作时,能够高效而且方便地从千千万万台计算机中选出自己所需的对象来。
IP地址是一个 32 位的二进制数,通常被分割为 4 个“ 8 位二进制数”(也就是 4 个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d 都是 0~255 之间的十进制整数。
IP地址分为 A,B,C,D,E 五类,在二进制表示种它们的区分是 A 类地址的第一位总是 0,B 类地址的前两位总是 10,C 类地址的前三位总是 110,D 类前四位固定为 1110,E 类前五位固定为 11110。
通过计算机的子网掩码判断两台计算机是否属于同一网段的方法是,将计算机十进制的 IP 地址和子网掩码转换为二进制的形式,然后进行二进制“与” (AND) 计算(全 1 则得 1,不全 1则得 0),如果得出的结果是相同的,那么这两台计算机就属于同一网段。
类别 子网掩码的二进制数值 子网掩码的十进制数值 A 11111111 00000000 00000000 00000000 255.0.0.0 B 11111111 11111111 00000000 00000000 255.255.0.0 C 11111111 11111111 11111111 00000000 255.255.255.0
域名以及 DNS
域名(英语:Domain Name),又称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)。
比如 jisuanke.com
域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。
域名分级
顶级域名
顶级域名是域名中只包含一个点的后缀。
- 国家顶级域名:
.cn
(中国),.jp
(日本) 等等。 - 国际顶级域名:
.com
(工商业),.net
(网络提供商),.org
(非盈利组织)等等。
二级域名
顶级域名到它前面一个点。
比如 xx.xx.edu.cn
是在国家顶级域名 .cn
下的二级域名 .edu
表示教育部门。
再往前就是三级、四级域名等等。
常见协议介绍
TCP 协议:属于传输层协议,面向连接。
UDP 协议:属于传输层协议,面向报文。
FTP、SFTP 协议:属于应用层协议,用于传输文件。
POP3、SMTP、IMAP 协议:属于应用层协议,用于发送邮件。
HTTP 协议:属于应用层协议,用于网页传输。
【例题6】
中国国家顶级域名是
【例题7】
下列与电子邮件无关的是
【例题8】
FTP可用来
编程语言的发展
机器语言
第一代计算机语言称为机器语言。机器语言就是 0/1 代码。计算机只能识别 0 和 1。在计算机内部,无论是一部电影还是一首歌曲或是一张图片,最终保存的都是 0/1 代码,因为 CPU 只能执行 0/1 代码。
汇编语言
汇编语言就是将一串很枯燥无味的机器语言转化成一个英文单词。只是将某些 0/1 代码替换成了有意义的字符串,比如 add 1,2;
高级语言
汇编语言之后又出现了第三代语言,第三代语言又叫“高级语言”。它们是相对于机器语言的一类语言,换言之,在我们熟知的编程语言中,除了机器码、汇编语言以外,都是高级语言,包括 C、C++、Python、Scratch、Java 等。
汇编语言和机器码是一一对应的关系,可以理解为同一指令的两种不同展现形式,都不属于高级语言。
第一门 高级语言是 FORTRAN,诞生于 1954 年,随后陆续诞生了 C、C++、Java、Python 等语言。以 1980 年为分界线,前一阶段属于结构化语言或者称为面向过程的语言,后一阶段属于面向对象的语言。我们学过的 C++ 是 面向对象 的语言,以及 Python,Java 也都是面向对象的语言;而 FORTRAN,C 语言则是 面向过程 的语言。
编译
一些编译型的高级语言在经过编译器的某些步骤后会被翻译成机器语言,这个过程之一就叫编译。我们经常会使用类似 Code::Blocks,DevC++,Visual Studio Code(简称 VSCode) 之类的工具来一键运行所写程序,但是这些工具都不是 编译器,而叫做 集成开发环境 IDE(Integrated Development Environment)。
真正的 C/C++ 编译器有 gcc,g++,lang,msvc 等。
C/C++ 从代码到机器码的过程是:预处理、编译、汇编、链接。
解释型语言
例如 Python 就是一种 解释型语言,此类语言是 没有编译过程 的,他们直接就可以按语义解释执行。这类语言的优点是写起来比较容易上手,省去了编译运行的复杂性,它有一些缺点:由于不能生成可运行的二进制文件,所以必须将源码提供给客户。
C/C++ 基础类型
C/C++ 属于静态类型语言,所有的变量必须声明它的类型。
比如:int a = 0;
,变量 aa 在它的作用域内就一直会是整型类型。
基础类型之间可以互相转换,一般分为显式强制类型转换和隐式强制类型转换。
比如:
int a = (int)(1.0 / 2);
那么变量 a的值就是 0,因为从 double 到 int 的强制类型转换会把 double 的小数位抹掉,即 0.5向下取整。
int a = 1
double b = 2.3;
a = b;
这种就叫做 隐式 强制类型转换,a 的值变为 2。
变量进行类型转换时,还有以下的规则:
- 当出现在表达式里时,有符号和无符号的 char 和 short 类型都会自动转化成 int 型。float 类型也会自动转化成 double 类型。
- 在包含两种数据类型的任何运算里,两个值都被转换成两种类型里面的较高级别。
- 类型级别从高到低的顺序是 long double、double、float、unsigned long long、long long、long、unsigned int 和 int。
- 在赋值语句中,计算的最后结果将被转化成要被赋值的那个变量的类型。
- 作为参数传递的时候,char 和 short 会被转化成 int,float 会被转化成 double。
C/C++ 基础类型占用字节数
在 C/C++ 中,每种类型都有其固定的占用空间,下面给出表格:
基础数据类型 | 32 位编译器 | 64 位编译器 |
---|---|---|
char | 1 | 1 |
指针 | 4 | 8 |
short | 2 | 2 |
int | 4 | 4 |
float | 4 | 4 |
double | 8 | 8 |
long | 4 | 8 |
long long | 8 | 8 |
当然,现在我们的系统都是 64 位了,只要默认按 64 位来使用即可。
【例题9】
[单选] 下列属于解释执行的程序设计语言是:
【例题10】
[单选] 下列不属于面向对象的程序设计语言是:
【例题11】
[单选] 若有定义:
int a=7;
float x=2.5, y=4.7;
则表达式
x + a % 3 * (int)(x+y) % 2
的数值是
【例题12】
程序输出的结果是___________________________________
char ch = 'a' - 30;
cout << ch1;
含义 | 数学中的逻辑运算符 | C/C++ 中的运算符 |
---|---|---|
非 | \neg¬ | ! |
与 | \land∧ | && |
或 | \lor∨ | \mid\mid∣∣ |
他们之间的优先级按照“非 > 与 > 或”排列,同级运算符从左向右依次计算。
而且在 C/C++ 中逻辑运算是有 短路性 的,也就是说同级运算中先计算出来的东西如果满足条件就不会往下继续计算了,例如:
int a = 1;
int b = 1;
if (a && ++b) {
// 内容
}
cout << b;
此时的输出会是 1。
【例题13】
甲乙丙丁四人在考虑周末要不要外出郊游。已知:
- 如果周末下雨,并且乙不去,则甲一定不去;
- 如果乙去,则丁一定去;
- 如果丙去,则丁一定不去;
- 如果丁不去,而且甲不去,则丙一定不去。
如果周末丙去了,则甲____T____
,乙 ____F____
,丁____F____
,周末____F____
。
对于前三个空,去了填写T
,没去填写F
。对于最后一个空,下雨了填写T
,没下雨填写F
。
丙去了,丁就没去,乙肯定没去,要不然丁就会去,丁已经没去了,甲就一定去了,否则丙就去不了,乙没去,甲还去了,那周末一定没下雨。
【例题14】
总结
很多同学之前觉得第一轮难,很多时候也是因为关于计算机基础的内容比较多,也比较杂,但是又不知道怎样去很好的准备。其实这里可以告诉大家的是,\(CSP-J1/S1\) 每年考察纯粹的计算机基础知识部分(咱们今天学的内容)只有 \(2\sim 4\) 道单项选择题,加起来总共 \(4\sim 8\) 分。
过往的真题一定要花时间去做,特别是一些时代比较远古的真题,那些套题里面计算机基础的内容占比相对于近年来讲是比较大的。《信息学竞赛一本通(初赛篇)》 等也能很好地在你的备赛路上给你一些帮助。
今天课程的最后一句话是:放平心态,冷静应对。 很多信息学竞赛选手最后没有取得很好的成绩,并不是因为他的水平不够,而是在考场上没有很好的把握住自己的心态。参加信息学竞赛一定需要一副冷静的头脑,这样你才能思考每道题该怎么拿分。
今天的作业是对于第一天课堂上的内容进行总结,需要整理到 纸质的本子 上,写完后拍照发到班级群。
总结的关键内容:
- CSP-J/S 比赛概况(总分、题型、考试时间)
- 计算机的时代划分
- 冯诺依曼结构的定义
- 常见文件大小单位的换算规则
- 计算机的硬件组成以及 CPU 的组成
- 有哪些常见的 Linux 发行版
- 32 位系统和 64 位系统的区别
- TCP/IP 五层协议结构
- IP 地址的结构、子网掩码的定义(小问题:192.168.166.8/24 这个子网中最多有多少种不同的 IP 地址)
- 列举常见的应用层协议并说明类别
- 数学中的逻辑运算符与 C++ 的逻辑运算符的对应关系