GESP 三级 · GESP 202403 C++ 三级 第 2 题

选择题 · 答案 C

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

题目

如果 $16$ 位短整数 $-2$ 的二进制是"FFFE",则短整数 $-4$ 的十六进制是( )

答案:C

解题思维

拿到这种题别慌,核心就是补码定义:16位无符号数最大值是65535,负数x的补码就是65536-x。题干给了-2=FFFE,其实就是在告诉你这个‘减2’的关系,求-4直接再减2就行。

常见错误

学生最容易栽跟头在两个地方:一是把FFFE当成原码或反码去理解,以为高位变低位,结果算出-4是FFFC(碰巧对了但逻辑全错);二是看到选项里有FF04、FFFA这种‘高位变了’的干扰项,误以为十六进制里直接改某一位就是数值变化,其实十六进制每位代表16的幂,低位改1代表减2,高位改1代表减256,差十万八千里;还有个坑是题干只说‘二进制是FFFE',没明说补码,有些同学会下意识用原码规则(符号位单独处理),导致在计算-4时把低四位当成绝对值直接替换,完全忽略了补码的‘借位’特性。

详细解析(节选)

考点定位与概念拆解

这道题考的是补码在16位短整数中的表示规则。很多同学一听到‘负数’就条件反射想背‘最高位是1’,或者把补码和原码、反码混在一起。其实补码的定义非常朴素:对于一个16位的无符号数,其能表示的最大值是$2^{16}-1=65535$。在补码体系里,负数$-x$的机器码就是$65536-x$(也就是把$-x$看成是一个很大的正数$65536-x$)。题干里说$-2$的二进制是FFFE,这其实就是在告诉你:FFFE这个十六进制数,如果把它当成无符号整数,它的值就是$65535-2=65533$,而$-2$在16位补码里对应的就是$65536-2=65534$,写成十六进制恰好是FFFE。所以这里的逻辑链条是:$-2 ightarrow 65536-2 ightarrow ext{FFFE}$。

命题人的挖坑视角

命题人为什么选$-2$和$-4$这两个数?因为$-4$比$-2$小,在补码里就是再减2。他们故意给了一个‘看起来像原码’的FFFE,想看看学生是不是真的懂补码是‘整体减’,还是只会机械地改某一位。选项里放了FF04(高位变了,像把$-2$看成了$-12$)、FFFA(高位变了,像把$-2$看成了$-6$)、FFFH(连十六进制数字都写错了),这些都是典型的‘高位干扰’,专门卡那些只记得‘负数最高位是1’却不会算具体数值的同学。

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