全国青少年CSP-J编程竞赛真题解析(2025版)
上QQ阅读APP看书,第一时间看更新

1.4 信息编码

信息编码是指将信息从一种形式或格式转换为另一种形式或格式,按照预先规定的方法将文字、数字或其他对象转换成数码,或将信息、数据转换成规定的电脉冲信号。本节的主要内容如图1.9所示。

图1.9

1.4.1 ASCII码

ASCII码是由美国国家标准委员会制定的一种包括数字、字母、通用符号和控制符号在内的字符编码集,其全称为美国信息交换标准代码(American Standard Code for Information Interchange,ASCII),见表1.6。ASCII码是一种7位二进制编码,能表示27=128种国际上最通用的西文字符,是目前计算机特别是微型计算机中使用最普遍的字符编码集。

表1.6

ASCII码包括以下4类最常用的字符。

(1)数字0~9。ASCII码值为0110000B~0111001B,对应的十六进制数为30H~ 39H。

(2)26个英文字母。大写字母A~Z的ASCII码值为41H~5AH,小写字母a~z的ASCII码值为61H~7AH。

(3)通用符号。如+、-、=、*和/等共32个。

(4)控制符号。如空格符和回车符等共34个。

1.4.2 内码和外码

内码是计算机内部进行存储和运算使用的数字编码。对于输入计算机的文本文件,机器是存储其相应的字符的ASCII码,如输入字符“A”,计算机将其转换成内码65后存储 在内存中。

外码是相对内码而言,指经过“外在的”学习之后,计算机可直接认识的编码形式,如字符“A”的外码是“A”。通常一个西文字符占1字节,一个中文字符占2字节。

1.4.3 汉字信息编码

1. 区位码和国标码

区位码把常用的汉字、数字和符号分类编在了一个方阵里,方阵的每一行称为“区”,每一列称为“位”,区码和位码均采用从01到94的十进制表示。方阵里的每个字符用4位十进制数表示,前两位是它的区码,后两位是它的位码。

国标码以GB/T 2312—1980为标准,包括6763个汉字及682个标点符号、西文字母、图形、数码等符号。国标码采用十六进制的21H到73H表示。

区位码和国标码之间的换算关系:区码和位码分别加上十进制数32,即可得到对应的国标码。例如,“大”字的区位码为2083,对应的国标码就是3473H。

2. 字形存储码

字形存储码是指供计算机输出(显示或打印)汉字时用的二进制信息,也称为字模,常见的是数字化点阵字模。

一般的点阵规模大小有16×16、24×24等,每一个点在存储器中用一个二进制位(bit)存储,如图1.10所示。在16×16的点阵中,需16×16 bit的存储空间,也就是16×16÷8=32字节的存储空间。在相同点阵中,不管其笔画繁简,每个汉字所占的字节数相等。为了节省存储空间,普遍采用字形数据压缩技术,例如矢量汉字就是用矢量方法将汉字点阵字模进行压缩后得到的汉字字形的数字化信息。

图1.10

1.4.4 真题解析

1. 【2019年第3题】一个32位整型变量占用(  )字节。

A. 32

B. 128

C. 4

D. 8

【解析】1字节=8位,因此32位整型变量占用4字节。

【答案】C

2. 【2020年第4题】现有一张分辨率为2048像素× 1024像素的32位真彩色图像。请问要存储这张图像,需要多大的存储空间?(  )

A. 16MB

B. 4MB

C. 8MB

D. 2MB

【解析】该图片一共需要2048×1024×32位二进制,因为1字节(byte)等于8位(bit)二进制,1MB=1024KB=1024×1024B,所以需要2048×1024×32/(8×1024×1024) MB,即8MB。

【答案】C

3. 【2023 年第 13 题】在计算机中,以下哪个选项描述的数据存储容量最小?(  )

A. 字节(byte)

B. 比特(bit)

C. 字(word)

D. 千字节(kilobyte)

【解析】本题考查的是“计算机存储单位”这一知识点。比特是计算机中最基本的存储单位,用来表示二进制数据的单个位,可以取0或1两个值。比特也是计算机中最小的存储单位。字节是计算机中常用的数据存储单位,由8个比特组成,可以用来表示一个字符或8个二进制位。字节是相对于比特来说更常用的单位。字通常指计算机中一个机器字的大小,表示计算机一次能够处理的二进制位数,其大小由机器的架构决定。千字节是计算机中常用的数据存储单位,用来表示较小的数据量,1千字节等于1024字节。

【答案】B

4. 【2024年第4题】以下哪个序列对应数组0至8的4位二进制格雷码(Gray code)?(  )

A. 0000,0001,0011,0010,0110,0111,0101,1000

B. 0000,0001,0011,0010,0110,0111,0100,0101

C. 0000,0001,0011,0010,0100,0101,0111,0110

D. 0000,0001,0011,0010,0110,0111,0101,0100

【解析】格雷码是一种特殊的二进制编码方式,其相邻的两个数之间只有一位不同。这种编码在减少误差或者传输过程中很有用,因为相邻的数字只会有一个位元的差异。

格雷码可以通过对二进制数进行如下变换得到:将该数的二进制表示与其二进制表示右移一位后的结果按位异或。

格雷码的生成也可以通过递归方式,将n-1位的格雷码首位添加0或1并调整顺序得到几位格雷码。标准4位格雷码序列(前8个):

0000

0001

0011

0010

0110

0111

0101

0100

由此可知,选项A(0000,0001,0011,0010,0110,0111,0101,1000)错误,第8个应该是0100,而不是1000。

选项B(0000,0001,0011,0010,0110,0111,0100,0101)错误,0100和0101的位置不正确,0100应该在最后。

选项C(0000,0001,0011,0010,0100,0101,0111,0110)错误,从0100开始顺序就错了,应该是0110。

选项D(0000,0001,0011,0010,0110,0111,0101,0100)正确,这是标准的4位格雷码序列。

【答案】D

5. 【2024年第5题】记1KB为1024字节(byte),1MB为1024KB,那么1MB是多少二进制位(bit)?(  )

A. 1000000

B. 1048576

C. 8000000

D. 8388608

【解析】一个字节占用8个bit,因此1MB共占用1024×1024×8=8388608个bit。

【答案】D

6. 【2024年第8题】在C/C++中,(char)('a'+13)与下面的哪一个值相等?(  )

A. 'm'

B. 'n'

C. 'z'

D. '3'

【解析】'a'的ASCII码为97,'a'+13为110,其ASCII字符为'n'。

【答案】B

1.4.5 习题

1. ASCII码的含义是(  )。

A. 一个简单的中文信息编码

B. 通用字符编码

C. 计算机信息交换标准代码二代

D. 美国信息交换标准代码

【解析】ASCII码的全称是“美国信息交换标准代码”。

【答案】D

2. 已知大写字母A的十进制ASCII码为65,则大写字母K的十进制ASCII码为(  )。

A. 72

B. 73

C. 75

D. 76

【解析】在ASCII码表中,字母字符的ASCII码是连续的,所以大写字母K的ASCII码为65+10=75。

【答案】C

3. 字符0的ASCII码为48,则字符8的ASCII码为(  )。

A. 8

B. 56

C. 128

D. 视具体的计算机而定

【解析】在ASCII码表中,因为数字字符的ASCII码是连续的,所以8的ASCII码为48+(8-0)=56。

【答案】B

4. 关于ASCII码,下面哪个说法是正确的?(  )

A. ASCII码表共包含256个不同的字符

B. ASCII码方案最初由英国人图灵提出

C. 最新扩展的ASCII码方案包含了汉字、阿拉伯语的字符编码

D. 一个ASCII码使用一字节的内存空间就能够存放

【解析】ASCII码表中共有128个不同的编码,最初由美国电气和电子工程师协会制定,不能表示中文。

【答案】D

5. 已知大写英文字母A的ASCII码比小写英文字母a的ASCII码小32,则大写英文字符Q的ASCII码比小写英文字母n的ASCII码(  )。

A. 大3

B. 小3

C. 小29

D. 小35

【解析】26个大写英文字母的ASCII码是连续的,26个小写英文字母的ASCII码也是连续的,所以可以根据A的ASCII码得到Q的ASCII码为81,根据a的ASCII码得到n的ASCII码为110,所以Q的ASCII码比n的ASCII码小29。

【答案】C