北京海淀区信息学竞赛 · 2023 北京市海淀区信息学竞赛(初赛)试题 第 4 题

选择题 · 答案 A

← 整套速查表 北京海淀区信息学竞赛 全部真题

题目

在 C++ 语言中,按位或运算符(|)是指参加运算的两个数,按二进制位进行“或”运算,若两个数对应位上有一个为 1,则该位上或运算的结果为 1,否则为 0。异或运算符(^)是指参加运算的两个数,按二进制位进行“异或”运算,若两个数对应位不同,则该位结果异或运算的结果为 1,否则为 0。请计算表达式 (23|2)^5 的值是( )。

答案:A

解题思维

这题就是纯计算,先把 23 和 2 转成二进制,按位或后再跟 5 做异或,一步一步来就行。

常见错误

最容易把十进制直接当二进制算,或者把 23 写成 10111 时把某一位写错;其次是在算完 23|2 后,忘记 5 的二进制是 101,直接拿十进制 7 去异或,结果就偏了。

详细解析(节选)

【考点与概念】 位运算的核心是把数看成二进制序列,逐位处理:

【命题视角】 这类题命题人喜欢把两个简单的十进制数包装成位运算表达式,考的是你是否真的会转进制、会不会按位操作,而不是让你背公式。坑通常藏在进制转换的某一位写错,或者运算顺序看错(比如先算 2^5 再或,那就不对了)。本题就是典型的“转进制→或→异或”三步走。

【思考心法】 拿到题先想: 1) 23 的二进制是什么? 2) 2 的二进制是什么? 3) 23|2 的结果是多少? 4) 5 的二进制是什么? 5) 上一步结果 ^5 等于多少? 按这个顺序一步步推,就不会乱。

【具体计算】

10111 00010 ----- 10111 = 23(因为 2 的 1 位原本就是 0,或之后还是 1,没变)。

10111 00101 ----- 10010 = 18。

所以表达式 (23|2)^5 的值是 18。

【避坑】

【考频与趋势】 在近三年的 CSP-J/S 真题中,位运算相关题目(含进制转换、补码、移位、与或非异或)的出现频率稳定在每年 1-2 题,主要集中在选择题和填空题。2023 年海淀区赛这道题就是典型代表,说明命题人仍在高频考查“进制 + 位运算组合”。

【预测】 基于现有数据,未来两年仍可能继续出现类似的“进制转换 + 位运算”选择题,难度不会大幅上升,但会更多地把多个位运算嵌套(如 (a|b)^c<<d),或者把负数补码混进来增加干扰项。暂无足够依据预测具体年份或题型变化,保持对进制和位运算的熟练手感即可。

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