CCF(中国计算机学会)-GESP(编程能力等级认证)——使用文档

17 篇文章 2 订阅
1 篇文章 0 订阅

1、CCF(中国计算机学会)-GESP(编程能力等级认证) 介绍:

CCF(中国计算机学会)-GESP(编程能力等级认证) 概述图

CCF(中国计算机学会)-GESP(编程能力等级认证) 使用网站平台

中国计算机学会编程能力等级认证,英文译名Grade Examination of Software Programming,英文简称GESP,是面向青少年的编程能力的等级认证,由中国计算机学会发起并主办。GESP的目的是为青少年计算机和编程学习者提供学业能力验证的规则和平台,提升青少年计算机和编程教育培训水平,推广和普及青少年计算机和编程教育,选拔优秀人才。GESP适用年龄阶段为4-20岁,覆盖学龄前、中小学等阶段,符合年龄条件的青少年均可参加认证。

组织委员会委员(除主席外,其他人按照姓氏拼音首字母排序):

主席

王延平 华北电力大学

委员

曹 晓 北京猿力教育科技有限公司

陈 虎 网易有道信息技术(北京)有限公司

陈向东 北京聪明核桃教育科技有限公司

刘 振 北京童程童美科技有限公司

马子超 深圳点猫科技有限公司

戚飞军 杭州小码教育科技有限公司

汪阳青 北京编码未来教育科技有限公司

徐建昌 CCF宁波会员活动中心

钟 鸣 成都娄外科技有限公司

技术委员会:(除主席外,其他人按照姓氏拼音首字母排序)

主席:孙善明

委员:高强、杨利君、胡秋萍、贾志勇、刘凤飞、马燕鹏、倪洪生、王京波、王宇航、徐晗路、张星宇、周彬、祝烈煌

命题委员会:(只公布命题委员会成员所在单位)

清华大学、北京大学、北京航空航天大学、中国人民大学、北京理工大学等权威专家。

2、GESP真题:

GESP考级

GESP三级

GESP 三级概述图

考点1 数据编码(原码、反码、补码)

训练题目1
选择题
正整数的原码和补码是否相同?
A. 是
B. 否
C. 只在特定情况下相同
D. 无法确定

在8位二进制表示中,数-5的补码是多少?
A. 11111011
B. 00000101
C. 10000101
D. 11111010

反码用于解决哪个数的表示问题?
A. 正整数
B. 负整数
C. 小数
D. 实数

在补码编码中,最高位(符号位)为1通常表示什么?
A. 正数
B. 负数
C. 零
D. 上述都不是

在8位二进制表示中,数7的反码是多少?
A. 00000111
B. 11111000
C. 11111001
D. 00000110

在补码表示中,-0和+0是否有不同的表示?
A. 有
B. 没有
C. 只在特定情况下不同
D. 无法确定

补码表示法的主要优点是什么?
A. 简化了加法运算
B. 提供了统一的表示方式
C. 减少存储空间
D. A和B都是

哪一种编码方式可以直接用于加法运算?
A. 原码
B. 反码
C. 补码
D. 上述都不是

在补码表示中,一个数和它的补数相加的结果是什么?
A. 0
B. 1
C. 该数的两倍
D. 无法确定

在8位二进制补码表示中,-128的表示是什么?
A. 10000000
B. 01111111
C. 11111111
D. 00000000

对于8位二进制数,以下哪个是-1的补码表示?
A. 11111111
B. 01111111
C. 10000001
D. 11111110

在反码表示中,正数和负数的最高位分别是什么?
A. 0和1
B. 1和0
C. 都是0
D. 都是1

为什么在计算机中使用补码而不是原码来表示负数?
A. 原码计算复杂
B. 补码可以表示更多的数
C. 补码简化了加法和减法运算
D. 原码无法表示负数

在计算机中,整数通常用哪种编码方式表示?
A. 原码
B. 反码
C. 补码
D. ASCII码

哪种编码方式中,负数的表示是其对应正数的二进制表示的每一位取反?
A. 原码
B. 反码
C. 补码
D. ASCII码

在8位二进制补码表示中,最大的正数是多少?
A. 01111111
B. 10000000
C. 11111111
D. 00000000

补码系统中,哪一个数的原码、反码、补码表示相同?
A. 0
B. -1
C. 1
D. -128

在反码表示中,-5的8位二进制表示是什么?
A. 11111011
B. 10000101
C. 11111010
D. 10000100

如果一个8位二进制数的补码是11111000,那么它的十进制值是多少?
A. -8
B. -7
C. -6
D. -5

在计算机中,使用补码表示有助于解决哪个问题?
A. 0的多种表示
B. 正数的表示
C. 负数的加法运算
D. 浮点数的表示

代码填空题
给定一个8位二进制补码11001010,其十进制表示为__________。
对于负整数-9,其8位二进制原码表示为__________。
在计算机中,整数15的8位二进制补码表示为__________。
若一个数的8位二进制原码为01101001,则其反码表示为__________。
给定一个数的8位二进制补码表示10001011,其反码表示为__________。
一个数的8位二进制原码是01000101,则其补码表示为__________。
负整数-32在8位二进制补码表示中为__________。
补码11111110在十进制中表示__________。
对于正整数+17,其8位二进制补码表示为__________。
若一个数的8位二进制补码为11110111,则其原码表示为__________。

训练题目1(解析):

选择题解析:

正整数的原码和补码是否相同?
答案: A. 是
解析: 对于正整数,其原码和补码是相同的。在原码和补码表示法中,正数的最高位(符号位)都是0,其余各位(数值位)不变。
在8位二进制表示中,数-5的补码是多少?
答案: A. 11111011
解析: 要找到-5的补码,首先确定5的二进制表示(00000101),然后对这个数取反得到反码(11111010),最后给反码加1得到补码(11111011)。
反码用于解决哪个数的表示问题?
答案: B. 负整数
解析: 反码主要用于表示负数。在反码表示法中,负数的最高位为1,其余各位是该数的绝对值的二进制表示的反码(即0变1,1变0)。
在补码编码中,最高位(符号位)为1通常表示什么?
答案: B. 负数
解析: 在补码表示法中,最高位为1通常表示该数为负数。补码用于简化二进制的加减运算,特别是负数的表示和运算。
在8位二进制表示中,数7的反码是多少?
答案: A. 00000111
解析: 正数的反码与其原码相同。因此,数7(原码为00000111)的反码也是00000111。
在补码表示中,-0和+0是否有不同的表示?
答案: B. 没有
解析: 在补码表示法中,+0和-0的表示是相同的,均为全0。这解决了原码和反码表示中0的符号歧义问题。
补码表示法的主要优点是什么?
答案: D. A和B都是
解析: 补码表示法的主要优点是它简化了加法运算,并为正数和负数提供了统一的表示方式。在补码系统中,加法和减法可以统一为加法运算。
哪一种编码方式可以直接用于加法运算?
答案: C. 补码
解析: 补码是唯一一种可以直接用于加法运算的编码方式,因为它解决了负数的表示和运算问题,使得加法和减法都可以简单地使用加法来实现。
在补码表示中,一个数和它的补数相加的结果是什么?
答案: A. 0
解析: 在补码表示中,一个数和它的补数相加的结果总是0。例如,一个数的补码加上它的原码(如果是负数的话)总是等于0。
在8位二进制补码表示中,-128的表示是什么?
答案: A. 10000000
解析: 在8位二进制补码表示中,-128是一个特殊情况,它的补码和原码相同,均为10000000。这是因为在8位二进制中,-128无法用常规的取反加一得到补码的方法表示。
对于8位二进制数,以下哪个是-1的补码表示?
答案: A. 11111111
解析: 在补码表示法中,-1的补码是所有位均为1的二进制数。这是因为1的原码是00000001,取反后得到11111110,加1得到11111111。
在反码表示中,正数和负数的最高位分别是什么?
答案: A. 0和1
解析: 在反码表示中,正数的最高位(符号位)是0,负数的最高位是1。反码表示法中,正数的反码与其原码相同,而负数的反码是其绝对值原码的每一位取反。
为什么在计算机中使用补码而不是原码来表示负数?
答案: C. 补码简化了加法和减法运算
解析: 使用补码而不是原码来表示负数是因为补码可以简化二进制的加减运算。在补码系统中,可以直接进行加法运算,而不需要根据数的符号进行不同的运算过程。
在计算机中,整数通常用哪种编码方式表示?
答案: C. 补码
解析: 计算机系统通常使用补码来表示整数,因为补码能够简化硬件设计,特别是在进行加法和减法运算时。
哪种编码方式中,负数的表示是其对应正数的二进制表示的每一位取反?
答案: B. 反码
解析: 在反码表示中,负数的表示是其对应正数的二进制表示的每一位取反(0变1,1变0),而最高位(符号位)变为1。
在8位二进制补码表示中,最大的正数是多少?
答案: A. 01111111
解析: 在8位二进制补码表示中,最大的正数是01111111,对应十进制中的127。这是因为符号位为0(表示正数),其余位全部为1。
补码系统中,哪一个数的原码、反码、补码表示相同?
答案: A. 0
解析: 在补码系统中,0是唯一一个其原码、反码、补码表示都相同的数。无论是正0还是负0,它们在原码、反码、补码中的表示都是全0。
在反码表示中,-5的8位二进制表示是什么?
答案: D. 10000100
解析: 首先确定5的二进制表示(00000101),然后对这个数取反得到-5的反码,即10000100。
如果一个8位二进制数的补码是11111000,那么它的十进制值是多少?
答案: D. -8
解析: 11111000的补码表示负数,首先减1得到11110111,然后取反得到00001000,即十进制的8,因此原数是-8。
在计算机中,使用补码表示有助于解决哪个问题?
答案: C. 负数的加法运算
解析: 使用补码表示有助于简化负数的加法运算。在补码系统中,加法和减法可以统一为加法运算
训练题目2
在8位二进制补码表示中,+27的补码是多少?
A. 00011011
B. 11100101
C. 10011011
D. 11110101
在8位二进制补码表示中,-13的补码是多少?
A. 11110011
B. 00001101
C. 11110010
D. 10001101
在8位二进制表示中,数-32的原码和补码分别是多少?
A. 原码: 10100000,补码: 11000000
B. 原码: 11000000,补码: 10100000
C. 原码: 10100000,补码: 11100000
D. 原码: 11000000,补码: 11000000
一个8位二进制数的补码为11101100,它的原码是多少?
A. 00010100
B. 10010100
C. 10010101
D. 00010101
在8位二进制反码表示中,-7的表示是多少?
A. 11111000
B. 11111001
C. 10000111
D. 10000110
在补码表示中,一个数和它相反数的补码相加的结果是什么?
A. 0
B. 1
C. 该数的两倍
D. 无法确定
如果一个8位二进制数的原码是10001010,它的十进制值是多少?
A. -138
B. -10
C. 138
D. 10
在8位二进制补码表示中,-128 + 1的结果是多少?
A. 10000001
B. 01111111
C. 11111111
D. 00000001
在8位二进制补码表示中,将-120和+15相加的结果是多少?
A. 10001011
B. 11110001
C. 10101001
D. 01110001
在8位二进制原码表示中,+127和-127相加的结果是多少?
A. 11111110
B. 00000001
C. 01111110
D. 00000000
在8位二进制补码表示中,最小的负数减1的结果是多少?
A. 10000000
B. 01111111
C. 11111111
D. 00000001
将十进制数19转换为8位二进制补码表示是多少?
A. 00010011
B. 10010011
C. 11101101
D. 11110011
在补码表示中,负整数的最高位(符号位)总是什么?
A. 0
B. 1
C. 取决于数值
D. 无法确定
一个8位二进制数的补码是10101010,它的反码是多少?
A. 10101001
B. 11010101
C. 01010101
D. 01010110
将十进制数-45转换为8位二进制补码表示是多少?
A. 11010011
B. 10101101
C. 10110011
D. 11011011
在8位二进制补码表示中,+32和-32相加的结果是多少?
A. 10000000
B. 00000000
C. 01111111
D. 11111111
一个8位二进制数的原码是11101011,它的补码是多少?
A. 10010101
B. 11101011
C. 10010100
D. 11101100
在8位二进制补码表示中,-1和+1相加的结果是多少?
A. 00000000
B. 00000001
C. 11111111
D. 10000000
一个8位二进制补码为11100101,它在十进制中的值是多少?
A. -27
B. 27
C. -29
D. 29
在8位二进制补码表示中,一个数的补码为11001010,该数在十进制中的值是多少?
A. -54
B. 54
C. -52
D. 52
训练题目2(解析)
在8位二进制补码表示中,+27的补码是多少?
答案: A. 00011011
在8位二进制补码表示中,-13的补码是多少?
答案: A. 11110011
在8位二进制表示中,数-32的原码和补码分别是多少?
答案: A. 原码: 10100000,补码: 11000000
一个8位二进制数的补码为11101100,它的原码是多少?
答案: B. 10010100
在8位二进制反码表示中,-7的表示是多少?
答案: B. 11111001
在补码表示中,一个数和它相反数的补码相加的结果是什么?
答案: A. 0
如果一个8位二进制数的原码是10001010,它的十进制值是多少?
答案: B. -10
在8位二进制补码表示中,-128 + 1的结果是多少?
答案: C. 11111111
在8位二进制补码表示中,将-120和+15相加的结果是多少?
答案: D. 01110001
在8位二进制原码表示中,+127和-127相加的结果是多少?
答案: D. 00000000
解析:
+127原码: 01111111
-127原码: 11111111
相加: 01111111 + 11111111 = 00000000 (溢出,符号位忽略)
在8位二进制补码表示中,最小的负数减1的结果是多少?
答案: C. 11111111
解析:
最小负数(-128)的补码: 10000000
减1操作相当于加-1: 10000000 + 11111111 = 011111111 (溢出,符号位忽略)
将十进制数19转换为8位二进制补码表示是多少?
答案: A. 00010011
解析:
十进制19转换为二进制: 00010011
在补码表示中,负整数的最高位(符号位)总是什么?
答案: B. 1
解析:
补码表示中,负数的最高位(符号位)总是1。
一个8位二进制数的补码是10101010,它的反码是多少?
答案: B. 11010101
解析:
由于最高位是1,表示负数,反码计算为补码减1然后取反:
减1: 10101010 - 1 = 10101001
取反: 11010110
将十进制数-45转换为8位二进制补码表示是多少?
答案: C. 10110011
解析:
十进制45转换为二进制: 00101101
取反: 11010010
加1: 11010010 + 1 = 10110011
在8位二进制补码表示中,+32和-32相加的结果是多少?
答案: B. 00000000
解析:
+32的补码: 00100000
-32的补码: 11100000
相加: 00100000 + 11100000 = 00000000
一个8位二进制数的原码是11101011,它的补码是多少?
答案: C. 10010100
解析:
由于最高位是1,表示负数,补码计算为反码加1:
反码: 11101010
加1: 11101010 + 1 = 10010100
在8位二进制补码表示中,-1和+1相加的结果是多少?
答案: A. 00000000
解析:
-1的补码: 11111111
+1的补码: 00000001
相加: 11111111 + 00000001 = 00000000 (溢出,符号位忽略)
一个8位二进制补码为11100101,它在十进制中的值是多少?
答案: A. -27
解析:
由于最高位是1,表示负数:
反码: 11100100
原码: 10011011 (即-27)
在8位二进制补码表示中,一个数的补码为11001010,该数在十进制中的值是多少?
答案: A. -54
解析:
由于最高位是1,表示负数:
反码: 11001001
原码: 10110110 (即-54)
以上解析提供了每个问题的详细计算过程。

GESP 3级提高版训练试卷(1)

一、单选题(每题2分,共30分)
在C++中,哪一个ASCII编码值与字符’0’相对应?
A. 48
B. 65
C. 97
D. 32

二进制数 1110 转换为十进制数是多少?
A. 12
B. 14
C. 16
D. 18

C++中哪一个运算符用于取地址?
A. *
B. &
C. ->
D. %

在C++中,如果 int x = 5; int y = 10;,则表达式 x & y 的值是多少?
A. 0
B. 5
C. 10
D. 15

ASCII码中,字符’B’和字符’b’的十六进制差值是多少?
A. 0x20
B. 0x21
C. 0x19
D. 0x1A

十六进制数0xF转换为十进制数是多少?
A. 10
B. 12
C. 14
D. 15

在C++中,字符数组的正确初始化方式是什么?
A. char str[6] = {‘H’, ‘e’, ‘l’, ‘l’, ‘o’};
B. char str[] = “Hello”;
C. string str = “Hello”;
D. A和B都正确

补码编码方式主要用于表示什么类型的数?
A. 正整数
B. 负整数
C. 小数
D. 实数

在C++中,哪种数据类型用于表示单个字符?
A. int
B. char
C. string
D. bool

十六进制数0x100转换为二进制数是多少?
A. 10000000
B. 10000
C. 100000000
D. 1000

以下哪个选项表示将十进制数转换为八进制数?
A. std::hex
B. std::oct
C. std::dec
D. std::bin

C++中,数组int arr[5] = {1, 2, 3, 4, 5};的长度是多少?
A. 4
B. 5
C. 6
D. 7

C++中,关于一维数组的哪种描述是错误的?
A. 数组可以包含多种类型的数据。
B. 数组元素可以通过下标访问。
C. 数组大小在定义后不能更改。
D. 数组是连续的内存空间。

哪种运算符用于C++中的位运算"按位或"?
A. |
B. &
C. ^
D. ~

将十进制数8.75(整数与小数相加的结果)转换为二进制数是多少?

A. 1000.11
B. 1000.101
C. 1001.01
D. 1000.001

二、判断题(每题2分,共20分)
在C++中,字符常量’\0’代表空字符,其ASCII码值为0。(对√ / 错×)
二进制数1001转换为十进制数等于9。(对√ / 错×)
C++中,位运算符’&‘的优先级高于’==‘。(对√ / 错×)
ASCII码中,大写字母和对应小写字母的编码值差固定为32。(对√ / 错×)
在C++中,如果数组定义为int arr[5];,则arr[5]是访问数组的合法表达式。(对√ / 错×)
任何一个整数左移一位都等于其乘以2。(对√ / 错×)
十六进制数表示中,A-F用于表示10-15。(对√ / 错×)
在C++中,字符串总是以空字符’\0’结束。(对√ / 错×)
ASCII码中,字符’0’的十进制编码为48。(对√ / 错×)
十进制数转换为二进制数时,结果的长度总是等于原数。(对√ / 错×)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值