跳到主要内容

第三课:信息编码与网络基础

一、信息编码基础

1.1 二进制基础

计算机使用二进制系统(0和1)表示所有数据

转换示例

#include <bitset>
#include <iostream>
using namespace std;

int main() {
int num = 42;
bitset<8> binary(num); // 8位二进制表示

cout << "十进制: " << num << endl;
cout << "二进制: " << binary << endl;
cout << "十六进制: 0x" << hex << num << endl;

return 0;
}

1.2 数据单位

单位中文名称换算关系示例
KB千字节(Kilobyte)1 KB = 1024 Byte一张低分辨率图片 ≈ 100 KB
MB兆字节(Megabyte)1 MB = 1024 KB = 1,048,5761{,}048{,}576 Byte一首MP3歌曲 ≈ 4 MB
GB吉字节(Gigabyte)1 GB = 1024 MB一部高清电影 ≈ 1-5 GB
TB太字节(Terabyte)1 TB = 1024 GB一块普通机械硬盘 ≈ 1-4 TB
PB拍字节(Petabyte)1 PB = 1024 TB大型数据中心存储 ≈ 数百PB
EB艾字节(Exabyte)1 EB = 1024 PB全球互联网流量每月 ≈ 数百EB

1.3 ASCII码详解

核心知识

  • 标准ASCII:7位编码(0-127),包含:
    • 控制字符(0-31):回车(13)、换行(10)、退格(8)
    • 可打印字符(32-126):空格(32)、数字(48-57)、大写字母(65-90)、小写字母(97-122)
  • 扩展ASCII:8位编码(128-255),包含特殊符号
  • 大小写转换:小写字母ASCII码 = 大写字母ASCII码 + 32

C++实践

#include <iostream>
using namespace std;

int main() {
// 大小写转换
char lower = 'a';
char upper = char(lower - 32);
cout << "小写a转大写: " << upper << endl;

// 字符类型判断
char ch = '7';
if(ch >= '0' && ch <= '9') {
cout << ch << " 是数字" << endl;
} else if((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z')) {
cout << ch << " 是字母" << endl;
}
return 0;
}

真题

  1. 字符'A'的ASCII码是65,则字符'D'的ASCII码是( )
    A. 68 B. 69 C. 70 D. 71
    答案:A(字母连续排列)

  2. 执行cout << (char)(97-32);输出结果是( )
    A. A B. a C. 65 D. 97
    答案:A

  3. 以下哪个ASCII码表示空格?
    A. 10 B. 13 C. 32 D. 48
    答案:C


1.4 汉字信息编码深度解析

编码体系:

编码类型作用示例特点
输入码(外码)汉字输入拼音、五笔用户交互界面
机内码(内码)内部存储GB2312、GBK双字节(16位)
字形码显示打印点阵字库16×16=32字节/字

编码转换过程:

区位码 → +0x2020 → 国标码 → +0x8080 → 机内码

示例计算

  • "啊"的区位码:1601(十进制)
  • 区码16 → 0x10(十六进制)
  • 位码01 → 0x01(十六进制)
  • 国标码:0x10+0x20=0x30, 0x01+0x20=0x21 → 0x3021
  • 机内码:0x30+0x80=0xB0, 0x21+0x80=0xA1 → 0xB0A1

存储计算

  • 24×24点阵汉字:(24×24)/8 = 72字节
  • 1000个汉字存储空间:1000×72 = 72,000字节 ≈ 70.3KB

真题

  1. 汉字"中"的区位码是5448,其机内码是( )
    A. 5650H B. D6D0H C. 3630H D. CEC4H
    解答:区位码54→0x36, 48→0x30 → 国标码0x5650 → 机内码0xD6D0 → 答案:B

  2. 存储500个32×32点阵汉字需要( )KB
    A. 62.5 B. 125 C. 250 D. 500
    解答(32×32)/8 = 128字节/字500×128 = 64,000字节 = 62.5KB答案:A

  3. 汉字输入法属于( )
    A. 内码 B. 外码 C. 字形码 D. 交换码
    答案:B


1.5 多媒体编码技术

图片编码:

格式压缩类型特点适用场景
BMP无压缩质量高、体积大图像处理
JPEG有损压缩高压缩比网页图片
PNG无损压缩支持透明通道图标、网页元素

存储计算
宽(像素) × 高(像素) × 色深(位) / 8

音频编码:

参数

  • 采样率(Hz):44.1kHz(CD标准)
  • 量化位数(位):16位(CD标准)
  • 声道数:1(单声道)、2(立体声)

存储公式
采样率 × 量化位数 / 8 × 声道数 × 时间(秒)

视频编码:

核心参数

  • 分辨率:1920×1080(1080p)
  • 帧率:24/30/60 fps
  • 编码格式:H.264、H.265

真题

  1. 44.1kHz、16位、立体声音频,1分钟数据量约( )
    A. 5MB B. 10MB C. 15MB D. 20MB
    解答44100×2×2×60÷1048576≈10.09MB答案:B

  2. 1920×1080分辨率、24位色深视频,1帧未压缩大小约( )
    A. 2.37MB B. 5.93MB C. 6.22MB D. 24.88MB
    解答1920×1080×3÷1048576≈5.93MB答案:B

  3. 以下采用有损压缩的是( )
    A. PNG B. FLAC C. MP3 D. ZIP
    答案:C

二、计算机网络基础

2.1 什么是计算机网络

计算机网络.png

计算机网络是将地理位置不同的、具有独立功能的计算机系统通过通信设备和线路连接起来,实现资源共享和信息传递的系统。

核心要素

  • 节点:计算机、服务器、路由器等
  • 连接介质:网线、光纤、无线电波
  • 协议:TCP/IP、HTTP、FTP等

2.2 网络分类

internet.png

#include <iostream>
using namespace std;

int main() {
cout << "网络类型分类:" << endl;
cout << "1. 局域网 (LAN) - 覆盖范围小(<1km)" << endl;
cout << "2. 城域网 (MAN) - 覆盖一个城市" << endl;
cout << "3. 广域网 (WAN) - 覆盖范围大(>100km)" << endl;
cout << "4. 互联网 (Internet) - 全球范围的网络互联" << endl;
return 0;
}

2.3 网络拓扑结构

topic

  • 星型拓扑:中央节点连接所有设备
  • 总线型:所有设备共享一条主干线
  • 环型:设备形成环形连接
  • 网状型:设备间有多条路径连接

网络拓扑结构对比分析表

特性星型拓扑总线型拓扑环型拓扑网状型拓扑
连接方式中央节点连接所有设备所有设备共享单条主干线设备形成闭环单向连接设备间多路径冗余连接
可靠性★★☆☆☆中心节点故障全网瘫痪★☆☆☆☆主干线故障全网瘫痪★★★☆☆单点故障影响全环★★★★★多点故障仍可运行
扩展性★★★★☆易添加新设备★★☆☆☆扩展需中断网络★★★☆☆添加设备需中断环★★★★☆可动态添加节点
故障影响范围中心节点故障:100%边缘故障:局部主干线故障:100%设备故障:局部任何节点/线路故障:100%单点故障:0%影响需多个节点故障才影响
传输性能依赖中心设备性能延迟稳定CSMA/CD冲突严重负载>40%时性能骤降令牌控制无冲突确定性延迟多路径负载均衡高吞吐量
安装成本中等(需中央设备)最低(布线简单)中等(专用设备)最高(布线复杂)
维护复杂度简单(集中管理)困难(故障定位难)中等(需环网管理协议)复杂(路由配置繁琐)
管理开销
数据流向中心节点集中控制广播式传播单向循环动态路径选择
典型应用场景办公室网络校园网接入层早期以太网(已淘汰)工业控制系统令牌环网络互联网骨干网军事通信
代表技术标准10/100/1000BASE-T10BASE2/10BASE5Token Ring, FDDIOSPF, BGP路由协议
安全性较高(隔离性好)低(数据广播易监听)高(加密路由)
带宽利用率70-85%30-40%80-95%90%+
现代使用比例85%+(主流拓扑)< 1%(基本淘汰)5%(特定工业场景)10%(骨干网络)

关键对比维度详解

1. 故障恢复能力
2. 性能随规模变化

2.4 OSI网络分层模型与常见网络协议

osi.png

协议对比:

协议可靠性连接性速度应用场景
TCP面向连接较慢网页浏览、文件传输
UDP无连接视频流、在线游戏

真题

  1. 电子邮件传输使用的协议是( )
    A. HTTP B. FTP C. SMTP D. UDP
    答案:C

  2. 视频会议最可能使用( )
    A. TCP B. UDP C. HTTP D. FTP
    答案:B

  3. 路由器工作在( )
    A. 物理层 B. 数据链路层 C. 网络层 D. 传输层
    答案:C


2.5 IP地址与子网划分

IP地址分类:

类别首字节范围默认掩码网络/主机位
A1-126255.0.0.08/24
B128-191255.255.0.016/16
C192-223255.255.255.024/8

子网划分示例:

  • IP地址:192.168.1.100
  • 子网掩码:255.255.255.192
  • 网络地址:192.168.1.64
  • 可用主机范围:192.168.1.65~192.168.1.126
  • 广播地址:192.168.1.127

C++子网计算

#include <iostream>
using namespace std;

int main() {
unsigned ip = 0xC0A80164; // 192.168.1.100
unsigned mask = 0xFFFFFFC0; // 255.255.255.192

unsigned network = ip & mask;
unsigned broadcast = network | ~mask;

cout << "网络地址: "
<< ((network>>24)&0xFF) << "."
<< ((network>>16)&0xFF) << "."
<< ((network>>8)&0xFF) << "."
<< (network&0xFF) << endl;

cout << "广播地址: "
<< ((broadcast>>24)&0xFF) << "."
<< ((broadcast>>16)&0xFF) << "."
<< ((broadcast>>8)&0xFF) << "."
<< (broadcast&0xFF) << endl;
return 0;
}

真题

  1. 192.168.2.1属于( )
    A. A类地址 B. B类地址 C. C类地址 D. 私有地址
    答案:D

  2. 子网掩码255.255.255.128对应的CIDR表示是( )
    A. /24 B. /25 C. /26 D. /27
    答案:B

  3. IP地址202.113.25.55,子网掩码255.255.255.0,网络地址是( )
    A. 202.113.25.0 B. 202.113.0.0 C. 202.0.0.0 D. 202.113.25.55
    答案:A


2.6 域名系统(DNS)

解析过程:

C++模拟DNS缓存

#include <iostream>
#include <map>
using namespace std;

class DNSCache {
private:
map<string, string> cache;
public:
void addEntry(string domain, string ip) {
cache[domain] = ip;
}

string query(string domain) {
if(cache.find(domain) != cache.end()) {
return cache[domain];
}
return "Not Found";
}
};

int main() {
DNSCache dns;
dns.addEntry("baidu.com", "110.242.68.66");
dns.addEntry("csp.org", "203.0.113.5");

cout << "baidu.com => " << dns.query("baidu.com") << endl;
cout << "google.com => " << dns.query("google.com") << endl;
return 0;
}

真题

  1. DNS解析的最终结果是获得( )
    A. MAC地址 B. IP地址 C. 端口号 D. 域名
    答案:B

  2. 以下哪个是顶级域名?
    A. www B. example C. .com D. example.com
    答案:C

  3. 本地DNS缓存查询属于DNS解析的( )
    A. 第一步 B. 第二步 C. 第三步 D. 最后一步
    答案:A


2.7 HTML基础

核心结构:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>页面标题</title>
</head>
<body>
<header>
<h1>网站标题</h1>
<nav>
<a href="#home">首页</a>
<a href="#news">新闻</a>
</nav>
</header>

<main>
<article>
<h2>文章标题</h2>
<p>段落内容</p>
<img src="image.jpg" alt="示例图片">
</article>
</main>

<footer>
<p>© 2023 网站名称</p>
</footer>
</body>
</html>

常用标签:

标签作用示例
<a>超链接<a href="https://csp.org">CSP</a>
<img>插入图片<img src="logo.png" alt="Logo">
<table>创建表格<tr><td>单元格</td></tr>
<form>创建表单<input type="text" name="username">

真题

  1. 定义HTML文档类型的声明是( )
    A. <html> B. <!DOCTYPE> C. <head> D. <body>
    答案:B

  2. 创建超链接的标签是( )
    A. <link> B. <a> C. <href> D. <url>
    答案:B

  3. 插入图片的正确属性是( )
    A. url B. source C. src D. image
    答案:C


三、计算机语言

3.1 语言演进与技术

语言发展史:

语言对比:

特性机器语言汇编语言C++Python
可读性极低
执行效率极高
开发效率极低
内存控制直接直接手动自动
典型应用固件驱动系统脚本

汇编语言示例(x86):

section .data
msg db 'Hello, Assembly!', 0xA
len equ $ - msg

section .text
global _start

_start:
; 系统调用号 (sys_write)
mov eax, 4
; 文件描述符 (stdout)
mov ebx, 1
; 消息地址
mov ecx, msg
; 消息长度
mov edx, len
; 调用内核
int 0x80

; 退出系统调用
mov eax, 1
int 0x80

C++编译过程:

真题

  1. CPU直接执行的是( )
    A. C++代码 B. Java字节码 C. 机器码 D. Python脚本
    答案:C

  2. 将汇编代码转换为机器码的是( )
    A. 编译器 B. 解释器 C. 汇编器 D. 链接器
    答案:C

  3. 以下属于解释型语言的是( )
    A. C B. C++ C. Java D. Python
    答案:D


四、综合应用题

  1. 汉字编码计算
    汉字"国"的区位码是2590,求其机内码(十六进制)
    解答

    区位码(十进制): 区=25, 位=90
    十六进制: 19H, 5AH
    国标码 = 区位码 + 2020H = 193AH + 2020H = 395AH
    机内码 = 国标码 + 8080H = 395AH + 8080H = B9DAH
  2. 网络配置
    主机IP:172.16.8.1,子网掩码:255.255.0.0
    求网络地址和广播地址
    解答

    网络地址: 172.16.0.0
    广播地址: 172.16.255.255
  3. 多媒体存储
    双声道音频,采样率48kHz,16位量化,时长5分钟
    计算未压缩数据量
    解答

    48,000×2×2×300÷1024÷1024≈54.93MB

综合应用题(10道)

1. 汉字编码计算

题目
汉字"科"的区位码是3139,求:

  1. 国标码(十六进制)
  2. 机内码(十六进制)
  3. 在24×24点阵下占用的存储空间(字节)

解答

1. 区位码: 区=31, 位=39
十六进制: 1F27H
国标码 = 区位码 + 2020H = 1F27H + 2020H = 3F47H

2. 机内码 = 国标码 + 8080H = 3F47H + 8080H = BF47H
实际存储为 BFC7H(因为47H+80H=C7H)

3. 点阵空间 = (24×24)/8 = 72字节

2. IP子网划分

题目
给定IP地址:172.16.150.25/20

  1. 计算子网掩码
  2. 求网络地址
  3. 求广播地址
  4. 可用IP地址范围

解答

1. /20 = 255.255.240.0
2. 网络地址:
150二进制: 10010110
子网掩码: 11110000 (240)
按位与:10010000 = 144 → 172.16.144.0
3. 广播地址:172.16.159.255
4. 可用范围:172.16.144.1 - 172.16.159.254

3. 音频存储计算

题目
某音频采用以下参数:

  • 采样率:48kHz
  • 量化位数:24位
  • 声道数:5.1环绕声(6声道)
  • 时长:2分30秒

计算未压缩数据量(MB,保留两位小数)

解答

计算公式:
数据量 = 采样率 × 量化位数/8 × 声道数 × 时间(秒)

代入:
48,000 × (24/8) × 6 × 150
= 48,000 × 3 × 6 × 150
= 48,000 × 2,700
= 129,600,000字节
129,600,000 ÷ 1,048,576 ≈ 123.60 MB

4. DNS解析过程

题目
描述在浏览器访问https://www.cspcontest.org时,DNS解析的完整过程(包括缓存查询)

解答


5. 网络协议分析

题目
某主机发送数据包到203.0.113.5:80

  1. 该地址属于哪一层协议?
  2. 传输层可能使用什么协议?为什么?
  3. 若使用TCP协议,建立连接需要几次握手?

解答

1. 传输层(TCP/UDP套接字地址)
2. TCP协议(:80是HTTP默认端口)
3. 3次握手:
SYN → SYN-ACK → ACK

6. HTML结构修正

题目
找出以下HTML代码中的5处错误并修正:

<!DOCTYPE html>
<html>
<head>
<title>CSP测试页</title>
<body>
<h1>欢迎参加CSP-J竞赛</h2>
<img source="logo.png" alt="赛事标志">
<a link="https://csp.org">官方网站</a>
<p><b>重要日期:<b>2023年10月21日</p>
</body>
</html>

解答

<!DOCTYPE html>
<html>
<head>
<title>CSP测试页</title>
</head> <!-- 1. 缺少head闭合标签 -->
<body>
<h1>欢迎参加CSP-J竞赛</h1> <!-- 2. h1/h2不匹配 -->
<img src="logo.png" alt="赛事标志"> <!-- 3. source应为src -->
<a href="https://csp.org">官方网站</a> <!-- 4. link应为href -->
<p><b>重要日期:</b>2023年10月21日</p> <!-- 5. b标签未正确嵌套 -->
</body>
</html>

7. 语言转换分析

题目
将以下C++代码转换为汇编语言(x86)和机器语言:

int a = 10;
int b = 20;
int c = a + b;

解答

汇编语言:
mov eax, 10 ; a = 10
mov ebx, 20 ; b = 20
add eax, ebx ; c = a + b
mov [c], eax ; 存储结果

机器语言(部分):
B8 0A 00 00 00 ; mov eax, 10
BB 14 00 00 00 ; mov ebx, 20
01 D8 ; add eax, ebx
A3 [c_addr] ; mov [c], eax

8. 视频存储计算

题目
某1080p视频(1920×1080)参数:

  • 帧率:30 fps
  • 色深:24位
  • 时长:10分钟
  • 压缩率:50:1

计算:

  1. 未压缩总数据量(GB)
  2. 压缩后文件大小(MB)

解答

1. 单帧大小 = 1920×1080×3 = 6,220,800字节
总帧数 = 30×60×10 = 18,000帧
未压缩大小 = 6,220,800 × 18,000 = 111,974,400,000字节 ≈ 104.31 GB

2. 压缩后大小 = 104.31 GB / 50 = 2.0862 GB ≈ 2137 MB

9. 网络配置问题

题目
某网络配置如下:

  • IP地址:192.168.3.100
  • 子网掩码:255.255.255.224
  • 网关:192.168.3.1
  • DNS:8.8.8.8

求:

  1. 网络地址
  2. 广播地址
  3. 本网段可用IP数量
  4. 该主机能否直接访问192.168.3.50?

解答

1. 网络地址:
224二进制:11100000
100二进制:01100100 → 网络位:01100000 = 96 → 192.168.3.96

2. 广播地址:192.168.3.127(主机位全置1,01111111)
3. 可用IP数:-2=30个(主机位5位)
可用地址数:总地址(2^5=32) - 2(网络地址11100000 + 广播地址01111111)
4. 可以访问(50在96-127范围内)

10. 协议栈综合

题目
描述从在浏览器输入https://www.example.com到页面显示的全过程(包含各层协议)

解答

1. 应用层:
- DNS解析:www.example.com → IP
- HTTP GET请求(HTTPS加密)

2. 传输层:
- TCP三次握手建立连接
- 端口:源端口随机,目标端口443(HTTPS)

3. 网络层:
- IP协议封装:源IP(本机) → 目标IP(服务器)
- 路由选择

4. 数据链路层:
- 封装MAC地址:源MAC(本机) → 网关MAC
- ARP协议获取网关MAC

5. 物理层:
- 转换为电信号/光信号传输

6. 服务器响应:
- 反向解包过程
- 返回HTTP响应(HTML/CSS/JS)

7. 浏览器渲染:
- 解析HTML构建DOM树
- 加载资源并渲染页面