

🧙♂️ 第2题:交换魔法阵
1、📖 题目:
程序让 a 和 b 发生了什么?
2、🎬 故事
小明学会了一个“交换魔法”:
a = a ^ b;b = a ^ b;a = a ^ b;
✨ 这是“无影交换术”(不用第三个变量)
3、💡 原理
异或的特点:
x ^ y ^ y = x
4、🎯 结果
👉 a 和 b 成功交换!
5、✅ 答案
👉 B. 互换
6、🧪 小例子
a = 3, b = 5;// 交换后:a=5, b=3
🧙♂️ 第8题:左移魔法
1、📖 题目:
00001111 左移3位
2、🎬 故事
(1)左移就像“整体向左搬家”,右边补0:
(2)👉 变成:
3、🧮 转十进制
4、✅ 答案
👉 D. 120
5、快速算法:
0x0F = 15
15<<3 = 15*8 =120
🌟 第9题:取反魔法(~ 的秘密)
1、📖 题目:哪个说法是错误的?
2、🎬 故事:黑白翻转魔法镜
(1)有一面神奇镜子 ~:
👉 0 变 1 👉 1 变 0
(2)就像:
3、💡 关键知识
👉 在计算机中(补码):
4、🧪 一个个验证
(1)✅ A:~5 = -6 ✔
(2)❌ B:~0 = 0 ❌(错!)
👉 因为:
3)✅ C:~(-3) = 2 ✔
(4)✅ D:~8 = -9 ✔
5、✅ 答案
👉 B(错误)
🌟 第10题:位运算判断 🔍
1、📖 题目:
已知:a 最低位是 0
2、🎬 故事
二进制:
3、💡 分析
👉 最后一位是0 → 结果0
4、🧮 整体
5、✅ 结论
👉 正确
🌟 第 3 题:神秘的 sum 宝箱 🎁
1、📘 题目 一段代码运行后,sum 的值是多少?
正确答案:D:40
2、🧮 思路讲解
这类 题是典型的:
“for 循环 + 累加器”
只要记住一句话:
📌 每循环一次,就往 sum 里加点东西
3、✨ 考试技巧 自己画表格:
4、 8 >> 2 : 等于 8 / 4 = 2
i % 3 == 8 >> 2 : i % 3 == 2
等差数列求和公式:(1+10)*10 / 2 = 55
continue的数组和:2 + 5 + 8 = 15
最终结果: 55 - 15 =40
5、🧠 知识点总结
👉 for 循环(注意continue的条件) 👉 累加变量(sum += i)


🌟 第 4 题:位运算小陷阱 🪤
(1)📘 题目
下面程序输出什么?
正确答案:B:5
(2)🔍 关键知识点
这道题就考“位移运算”
3 >> 2 // 等于 08 >> 3 // 等于 1
(3)🧠 故事讲解
想象数字在传送带上:
(4)🧮 代码分析
int x = 5;if (x == 3 >> 2) // 3>>2 = 0
❌ 5 ≠ 0,所以 if 不成立 ➡️ x 没变 ➡️ 输出 5
(5)🧠 知识点总结
👉 >> 位运算 👉 3级考试必考!
🌟 第 5 题:字符串 长度大冒险 📏
(1)📘 题目
string s = "C++ Programming";
s.length() 是多少?
是15
(2) 🧮 数一数
C(1) +(2) +(3) 空格(4)P(5) r6 o7 g8 r9 a10 m11 m12 i13 n14 g15
(3) 🧮 算一算:
15|3 // 1111 | 0011 = 1111 十进制:15
(4) 答案: B 、 15
✅ 正确答案:A:十进制 11
1、🧠 故事:位运算混合计算
遇到这问题。我们一步一步来,不要乱!
2、🧮 先算括号()内
15 = 1111 4 = 0100^ ↓ 1011 = 11
3、🧮 再算 最左边 &
3 = 0117 = 111& ↓ 011 = 3
4、🧮 最后 算 |
5、🧠 知识点总结
^:不同为 1
&:都为 1 才是 1
|:有 1 就是 1
括号最优先!
🧠 故事讲解:谁先上滑梯? 🛝
(1)优先级顺序:
(2)✏️ 小例子
(3)先算:
(4)🧠 知识点总结
📌 位运算优先级比算数运算符优先等级小
🧩 第9题:不用第三人,交换位置!
📜题目:哪个位运算可以交换两个变量? 👉答案:A
1、🌈故事
汉克老师遇到两个小精灵:
他们吵架了:
“我想换位置,但不想找第三个人帮忙!”
2、🧠神奇魔法:异或 XOR
口诀:
3、✨交换步骤
a = a ^ b;b = a ^ b;a = a ^ b;
4、🔍举例
a = 5 (101)b = 3 (011)a = a ^ b → 110b = a ^ b → 101(变成5)a = a ^ b → 011(变成3)
🎉成功交换!
🎯结论
👉答案:A
🧩 第3题:浮点数右移?
📜题目: (x >> 1) 等价于 x/2(x是浮点数)
👉答案:❌ 错
1、🌈故事
汉克老师课堂演示:
结果💥 编译器直接爆炸!
2、🧠原因
👉 >> 只能用于 整数
3、🎯结论
👉浮点数不能位运算 → ❌
🧩 第6关:判断奇偶的秘诀
📜题目: (x & 1) == 0 判断偶数
👉答案:✅ 对
1、🌈故事
汉克老师将10进制数字转成2进制数字:
2、🧠规则
👉看2进制数字最后一位:
3、🎯结论
👉成立 → ✅
🌟《奇偶校验大冒险》
🎯 一、故事背景
1、在“数据王国”里,所有信息都会变成二进制传输:
2、👑国王布置了任务:
“数据在路上传输后要汇报一共有几个1,而且要知道是奇数个1还是偶数个”
🧠 二、规则讲解
1、📜规则
👉统计所有数字中:
2、然后判断:
如果是 奇数个1 → 输出校验码 = 1
如果是 偶数个1 → 输出校验码 = 0
🌈 三、举个完整例子
1、🎯输入
2、🧩 第一步:变成二进制
3、🧩 第二步:统计总数
4、🧩 第三步:判断奇偶
5、🎯输出
🧠 四、核心算法
1、我们要做三件事:
🥇步骤1:读入数据
🥈步骤2:一个一个处理数字
for(int i = 0; i < n; i++)
🥉步骤3:数每个数字里的“1”
👉关键技巧来了!
while(x > 0){ count += (x & 1); x >>= 1;}
2、🌟重点解释!
(1)🧩 (x & 1) 是什么?
👉取最后一位!
6 = 110 → 最后一位是05 = 101 → 最后一位是1
(2)🧩 x >>= 1 是什么?
👉右移一位(去掉最后一位)
🎯 五、完整代码
#include using namespace std;intmain(){ int n; cin >> n; int total = 0; // 记录所有1的数量 for(int i = 0; i < n; i++) { int x; cin >> x; // 统计x中1的个数 while(x > 0) { total += (x & 1); // 看最后一位是不是1 x >>= 1; // 去掉最后一位 } } // 输出总数 和 校验码 cout << total << " " << (total % 2) << endl; return 0;}
🎯 第10题:位运算魔法阵
1、🧠 代码
int a = 0b1101;int b = 0b1011;cout << (a ^ b);
2、🎭 故事
👉 有两个灯阵:
👉 ^ 是一种魔法:
👉 不同亮 → 亮(1) 相同 → 灭(0)
3、✏️ 计算
4、📌 结论
👉 ^ 是:
按位异或
5、🎉 答案:D


一、🧙♂️ 故事背景:魔法数字锁
小A来到了一个神秘宝箱前 🧰 宝箱上写着一行奇怪的咒语:
(x & i) + (x | i) == 2025
👉 只有找到最小的正整数 i 👉 才能打开宝箱!
二、🎯 任务目标
👉 输入一个数字 x 👉 找到最小的正整数 i,让:
(x & i) + (x | i) == 2025
成立!
👉 如果找不到,就输出 -1
三、算法分析:
1、🧠 第一步:认识两个魔法
(1)✨ 魔法1:&(按位与)
👉 规则:
👉 就像:
👉 “两个人都同意,才亮灯💡”
(2)✨ 魔法2:|(按位或)
👉 规则:
👉 就像:
👉 “只要有一个人同意,就亮灯💡”
2、🎭 第二步:进一步理解
假设:
x = 5 → 二进制 0101i = 3 → 二进制 0011
✏️ 计算
① 按位与
② 按位或
③ 相加
👉 如果等于2025,就成功!
3、🧠 第三步:怎么找 i?
(1)🎯 关键思路
👉 i 是未知的 👉 我们可以使用枚举法:一个一个试!
(2)🎭 故事
我们像一个小侦探 🕵️♂️
👉 从 i = 1 开始试:
4、🧠 第四步:范围是多少?
我们可以:
for (int i = 1; i <= 2025; i++)
👉 为什么?
👉 因为要的结果是 2025,x | i 的结果是大于等于i,所以,最大搜索到2025足够了。 👉 超过就没必要了!
5、✏️ 第五步:完整代码
#include using namespace std;intmain(){ int x; cin >> x; for(int i = 1; i <= 2025; i++) { if((x & i) + (x | i) == 2025) { cout << i << endl; return 0; // 找到就结束 } } cout << -1 << endl; // 没找到 return 0;}
四、🎉 最终总结
👉 这题本质就是:

🌟 第5题:逻辑运算大战
🎯 正确答案:D
1、🧠 故事
数字们在打架:
5 && 3 // 两侧都是真,结果为真 1 不是0 错误5 || 3 // 至少一侧是真,结果为真 1 不是11 错误
2、二进制:
5 = 0101 //5 & 33 = 0011 -------- 0001 //结果是1,正确5 = 0101 //5 | 33 = 0011 -------- 0111 //结果是7不是8,错误
3、只有 D 正确 ✔️
🌟 第6题:右移魔法(补码)
🎯 正确答案:B(-2)
1、🧠 故事
(1)一个负数:
👉 右移1位(>>1)
(2)规则: 👉 符号位补1(因为是负数)
(3)结果:
4)👉 转回十进制 = -2
2、🎉 选 B
🌟 第8题:按位或(|)的魔法
🎯 正确答案:A
1、🧠 故事
(1)魔法:
(2)👉 10(二进制) = 1010
作用: 👉 把 第2位(从右往左)变成1
👉 把 第4位(从右往左)变成1
(3)所以: 👉 强制“第二位 = 1”,是正确的。
2、🎉 选 A
🌟 第5题:字符的输出
🎯 答案:✅️ 正确
1、🧠 看程序
char x=65; //x的二进制为00100001x=x&00001111; //00001111是8进制数,转换10进制为585 ,65与585&的结果还是:00100001cout<
2、 操作符 &
👉 & 的左右两侧要都是1才是1,有一个0 ,就是0。
🌟第5题:位运算 vs 逻辑运算
1、🎯故事
有两个魔法:
2、🧠重点
👉 二进制:
👉 按位或:
3、🎯答案 C
👉 ✅ (23 | 10) == 31
🌟第6题:位运算大考验
1、🎯故事
右移运算:
👉 相当于:
2、🧠对比
👉 所以:
3、🎯答案
B. (2>>2)和(1>>1)的值是一样的
🌟第7题:神秘交换术✨
1、🎯故事
有一个“无中间变量交换术”:
2、🧠作用
👉 交换 a 和 b
3、🎯结论
👉 ✅ 实现变量交换
3、🎯答案
C. a和b的值交换


🌟第8题:控制最低位
1、🎯故事
有个魔法
2、🧠分析
👉 所以:
3、🎯效果
👉 把最后一位变成 0!
4、🎯答案 C
👉 ✅ 使最低位为0
🌟 第9题:左移魔法(位运算)
1、🧙♂️故事:
(1)小法师拿到一个二进制宝石:
2)国王说:“把它左移2位!”
👉 左移规则(重点!!):
2、🎯 操作过程:
原来:1010 1110左移2:1011 1000
3、✅ 正确答案:A、a的值变为1011 1000
🌟 第10题:按位与的秘密
1、🧙♂️故事:
有两个魔法:
result = a & bresult2 = a2 & b2
2、第一部分:
a = 123b = 1result = 123 & 1
👉 所以结果 = 1
3、第二部分:
👉 -1 的二进制是:全1!
👉 所以:
👉 result2 = -123
4、✅ 正确答案:D(1 -123)