0Pricing
Competitive Programming Academy · 课时

AND、OR、XOR 与移位

自信地读取并组合位

AND、OR、XOR 与移位 是 CoddyKit 上的免费 Competitive Programming Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Competitive Programming Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Competitive Programming Academy 课程共包含 4 节课。

位是您的工具箱

每个整数其实都是一串位,只由 0 和 1 组成。学会读取和组合它们,就能在竞赛中使用快速而巧妙的技巧。🔧

查看二进制形式

使用 Python 的bin()可以查看任意数字的位。前缀 0b 只是表示它是二进制数,后面的部分就是位模式。

print(bin(13))  # 0b1101

AND 保留公共位

AND 运算符(&)只有在两个数字对应位置都为 1 时才会得到 1。它非常适合检查或屏蔽共享的位。

print(6 & 3)  # 0b110 & 0b011 = 0b010 = 2

OR 组合位

OR 运算符(|)只要任意一个数字对应位置为 1,就会得到 1。您可以用它打开标志位,同时不影响其他部分。

print(6 | 1)  # 0b110 | 0b001 = 0b111 = 7

XOR 找出差异

XOR 运算符会在两个位不同时得到 1。它是竞赛中用于切换位和找出唯一不同元素的常用工具。

print(6 ^ 3)  # 0b110 ^ 0b011 = 0b101 = 5

XOR 可以自我抵消

一个数字与自身进行 XOR 后始终为 0,而它与 0 进行 XOR 后保持不变。这种自我抵消的性质支撑了许多XOR问题。

print(7 ^ 7)  # 0
print(7 ^ 0)  # 7

找出唯一的数

如果每个值都出现两次,只有一个值出现一次,那么将它们全部进行 XOR,成对出现的值就会相互抵消。最后留下的就是唯一的值。

ans = 0
for x in [4, 1, 2, 1, 2]:
    ans ^= x
print(ans)  # 4

左移实现乘法

左移会将位向高位移动,并在右侧补入零。每左移一位,数值就会翻倍,相当于乘以 2 的幂。

print(3 << 2)  # 3 * 4 = 12

右移实现除法

右移会从右端移除位。每右移一位,数值就会减半,相当于除以 2 的幂并进行整数除法。

print(20 >> 2)  # 20 // 4 = 5

构造 2 的幂

将 1 左移 k 位,就能立即得到2 的 k 次方。这是创建单个位掩码最简洁的方法。

print(1 << 5)  # 32

竞赛中速度很重要

位运算符只需一个快速步骤即可完成,因此用移位替代算术运算,可能帮助您通过原本难以达到的时间限制。请熟练掌握它们。⚡

快速检查

现在测试一下您的位运算符。

回顾:位运算符

您已经认识了AND, OR, XOR和移位运算:用一个快速步骤组合、切换并缩放位。这些是后续所有位运算技巧的基础。🎉

常见问题解答

「AND、OR、XOR 与移位」课时是免费的吗?

是的 — 「AND、OR、XOR 与移位」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Competitive Programming Academy 课程的其余内容,请升级到 CoddyKit PRO。 Competitive Programming Academy 课程共包含 4 节课。

「AND、OR、XOR 与移位」这节课中我会学到什么?

自信地读取并组合位 你通过在浏览器中直接运行的动手代码来练习 Competitive Programming Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Competitive Programming Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Competitive Programming Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「AND、OR、XOR 与移位」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Competitive Programming Academy 课中编写并运行代码吗?

能。每节 Competitive Programming Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. AND、OR、XOR 与移位
  2. 设置、清除与翻转位
  3. 统计位数与最低位的置位
  4. 将位掩码用作微型集合
← 返回 Competitive Programming Academy