GESP 三级 · GESP 202503 C++ 三级 第 6 题

选择题 · 答案 A · 考点:基本数据类型

← 整套速查表 GESP 三级 全部真题

题目

在 C++ 中,一个 8 位有符号整数(使用补码表示)的范围是( )

答案:A

考点

基本数据类型

解题思维

答案A。结合题目信息和所学知识分析。

常见错误

仔细审题,注意"不正确""不属于""不是"等否定词。用排除法缩小范围。

详细解析(节选)

【考点】数据类型|补码表示|内存表示

本题考查《GESP 考试大纲》三级“数据类型与表示”模块中的“有符号整数范围”知识点。命题人卡住死记硬背的考生——他们只背了范围,却不理解补码的构造规则。这类题在三级考试中出现频率很高,是区分度较大的题目。GESP 三级考试对数据类型的理解有明确要求,必须掌握有符号整数的表示规则。

看到"8 位有符号整数”立刻想到 1 位符号位 +7 位数值位 → 最小值是 -2^7 = -128,最大值是 2^7 - 1 = 127。通法是"n 位有符号整数范围 [-2^{n-1}, 2^{n-1} - 1]"。这个规律对所有位宽都成立,是理解有符号数表示的基础。补码的构造规则是:正数直接表示,负数取反加一。例如,-1 的补码是 11111111(8 位),-128 的补码是 10000000。所以最小值是 -2^7 = -128,最大值是 2^7 - 1 = 127。

选项 B 把负数范围扩大了;选项 C 把无符号范围当有符号用;选项 D 完全混淆了符号位概念。最阴险的是选项 C 和 D——它们利用了"二进制能表示 2^8 个数”的直觉,但忽略了符号位占用了 1 位。所以如果你只背结论,不理解补码的构造规则,就会掉进这个坑。补码的最小值由符号位为 1 且其余位全 0 得到(-2^7),最大值由符号位为 0 且其余位全 1 得到(2^7-1)。选项 B 的错误在于把负数范围扩大到了 -127,这违反了补码的定义。选项 C 的错误在于把无符号范围当有符号用,这混淆了符号位概念。选项 D 的错误在于完全混淆了符号位概念,这导致范围错误。

如果改成"16 位有符号整数范围是多少",答案就是 -32768 到 32767。刷到类似题时,先问自己"命题人想考我补码的哪一层逻辑?"对于最小值,直接回答 -2^{n-1} 即可。这类题的本质是考察对补码表示法的理解,而不是死记硬背范围。如果是无符号整数,范围就是 0 到 2^n - 1,但本题是有符号的,所以必须考虑符号位。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断