GESP 三级 · GESP202609 C++ 三级 第 17 题

判断题 · 答案 B

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

题目

求 −13 的补码,可以对正数 13 的二进制,从右向左扫描,遇到第一个 1 之后,右边所有位全部取反,左边保持不变。

答案:B

解题思维

标准补码定义是"按位取反后加1"。题目描述的"从右向左扫描,遇到第一个1之后右边全部取反"是反码算法的变体。以13为例,二进制00001101,按题述方法:最右1→0,0→1,1→0,1→0,0→1,0→1,0→1,0→1,得11110010。而正确补码应为11110011(00001101取反得11110010,再加1)。两者差1,故命题错误。

常见错误

选项A是典型陷阱,利用"取反"与"补码"的语义混淆。学生易将"遇到第一个1后取反"误认为补码定义,实则这是反码(one's complement)的构造方式。补码必须包含"加1"步骤,否则无法正确表示负数。

详细解析(节选)

考纲定位

本题考查GESP三级"二进制与补码"模块。命题人特意设计此题,卡住的是考生对"补码定义"的机械记忆——许多学生只背了"取反加一",却忽略了"从右向左扫描,遇到第一个1之后右边全部取反"这一描述与标准定义的本质差异。

解题思维

标准补码定义是"按位取反后加1"。题目描述的"从右向左扫描,遇到第一个1之后右边全部取反"是反码算法的变体。以13为例,二进制00001101,按题述方法:最右1→0,0→1,1→0,1→0,0→1,0→1,0→1,0→1,得11110010。而正确补码应为11110011(00001101取反得11110010,再加1)。两者差1,故命题错误。

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