“老马说:位运算看似简单,却是GESP高频考点,稍不留神就掉坑里。今天咱们用三道真题,把位运算的底裤扒干净!
最近不少同学私信我:“老马,位运算到底怎么学?每次考试都错。”
其实,位运算在GESP Python三级中几乎是必考题型,而且往往结合逻辑判断和计算结果来设陷阱。
今天我们就以三道真题为例,把位运算的核心知识点、易错点和解题技巧一次性讲透。
题目:
a,b为整数,如果表达式a ^ b == 0为 True,那么说明a与b相等。【GESP三级:2024.06】
答案: ✅ 正确
老马解析:
^)的规则是:相同为0,不同为1。a ^ b == 0,意味着a和b的每一个二进制位都完全相同,所以a == b。a ^ b == 0。解题技巧:
x ^ x = 0(自己异或自己得0)x ^ 0 = x(任何数与0异或不变)题目:
执行下面Python代码后,输出的结果是14。【GESP四级:2024.12】
a = 5b = 3result = (a & b) << 1print(result)答案: ❌ 错误(实际输出是2,不是14)
老马解析:
a & b:010100110001 → 十进制11 << 1 = 2常见陷阱:
& 是逻辑与,或者混淆了优先级。Python运算符优先级表中,<< 和 >> 优先级高于 &,所以 (a & b) << 1 中括号是多余的,但结果一样。& 当成 and,误认为 5 and 3 是 True 然后左移……这是低级错误。解题技巧:
题目:
在Python中,print(~0) 的输出结果仍是 0。【GESP三级:2025.12】
答案: ❌ 错误(实际输出是-1)
老马解析:
~ 是按位取反运算符。0,其二进制表示为 ...00000000(无限个0)。...11111111,这是**-1的补码表示**。~0 的结果是 -1。为什么不是0?
~x 等价于 -x-1,这是一个非常实用的公式!~0 = -0 - 1 = -1~5 = -5 - 1 = -6解题技巧:
~x = -x - 1,可以秒杀一切取反题目。& | and 混淆 | ||
| | |||
^ | |||
~ | ~x = -x-1 | ||
<< | |||
>> |
特别注意:
x & (x-1) 可消去最低位的1x & (-x) 可取出最低位的1~x = -x-1and、or、not 返回布尔值,&、|、~ 返回整数。位运算就像一把瑞士军刀,小巧但锋利。掌握了它,你不仅能轻松应对GESP考试,未来在算法竞赛和底层开发中也会游刃有余。
最后送大家一句话:“位运算无他,唯手熟尔。” 多练几道题,把二进制刻在脑子里,下次看到 ^、&、~,你就能一眼看穿它的真面目。
老马互动:你觉得位运算中最容易掉坑的是哪个?欢迎在评论区留言,老马会亲自解答!如果觉得有用,记得转发给你的考友,一起上岸GESP!
青少年编程竞赛交流
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),添加小助手微信,让他邀请大家进入学习群。进群之后大家可以参与定期组织的21天刷题打卡、等级考试测评、教育部白名单比赛辅导以及青少年编程组队竞赛等活动。
