当前位置: 首页 > news >正文

GESPC++三级考试语法知识---位运算历年真题


🧙‍♂️ 第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:
00001111 << 3

(2)👉 变成:
01111000

3、🧮 转十进制

64 + 32 + 16 + 8 = 120

4、✅ 答案

👉D. 120

5、快速算法:

0x0F = 15

15<<3 = 15*8 =120



🌟 第9题:取反魔法(~ 的秘密)

1、📖题目:哪个说法是错误的?


2、🎬 故事:黑白翻转魔法镜

(1)有一面神奇镜子~

👉 0 变 1
👉 1 变 0


(2)就像:
00000101(5) 变成 11111010

3、💡 关键知识

👉 在计算机中(补码):

~x = -(x + 1)

4、🧪 一个个验证

(1)✅ A:~5 = -6 ✔
~5 = -(5+1) = -6

(2)❌ B:~0 = 0 ❌(错!)
~0 = -1

👉 因为:

00000000 → 11111111 → -1

3)✅ C:~(-3) = 2 ✔

(4)✅ D:~8 = -9 ✔

5、✅ 答案

👉B(错误)


🌟 第10题:位运算判断 🔍

1、📖题目:

(a & 3 & 1) == 0 ?

已知:a 最低位是 0


2、🎬 故事

二进制:
a: ?????0

3、💡 分析

a & 1 → 看最后一位

👉 最后一位是0 → 结果0


4、🧮 整体

(a & 3 & 1) == 0 //正确

5、✅ 结论

👉正确




🌟 第 3 题:神秘的 sum 宝箱 🎁


1、📘 题目
一段代码运行后,sum 的值是多少?

正确答案:D:40


2、🧮 思路讲解

这类 题是典型的:

“for 循环 + 累加器”

只要记住一句话:

📌 每循环一次,就往 sum 里加点东西


3、✨ 考试技巧
自己画表格:

isum
11
21(continue)

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 // 等于 0 8 >> 3 // 等于 1

(3)🧠 故事讲解

想象数字在传送带上:

  • >>表示向右挪

  • 挪一次,相当于除以 2


(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、🧮 先算括号()内

c ^ d = 15 ^ 4

15 = 1111 4 = 0100 ^ ↓ 1011 = 11

3、🧮 再算 最左边 &

a & b = 3 & 7
3 = 011 7 = 111 & ↓ 011 = 3

4、🧮 最后 算 |

3 | 11 = 11

5、🧠 知识点总结

  • ^:不同为 1

  • &:都为 1 才是 1

  • |:有 1 就是 1

  • 括号最优先!



🧠 故事讲解:谁先上滑梯? 🛝


(1)优先级顺序:

乘除 > 加减 > 位运算

(2)✏️ 小例子

3 + 4 & 1

(3)先算:

3 + 4 = 7 7 & 1 = 1

(4)🧠 知识点总结


📌 位运算优先级比算数运算符优先等级小




🧩 第9题:不用第三人,交换位置!

📜题目:哪个位运算可以交换两个变量?
👉答案:A


1、🌈故事

汉克老师遇到两个小精灵:

a = 5 b = 3

他们吵架了:

“我想换位置,但不想找第三个人帮忙!”


2、🧠神奇魔法:异或 XOR

口诀:

相同为0,不同为1

3、✨交换步骤

a = a ^ b; b = a ^ b; a = a ^ b;

4、🔍举例

a = 5 (101) b = 3 (011) a = a ^ b → 110 b = a ^ b → 101(变成5) a = a ^ b → 011(变成3)

🎉成功交换!


🎯结论

👉答案:A



🧩 第3题:浮点数右移?

📜题目:
(x >> 1) 等价于 x/2(x是浮点数)

👉答案:❌ 错


1、🌈故事

汉克老师课堂演示:

double x = 3.5; x >> 1;

结果💥 编译器直接爆炸!


2、🧠原因

👉>>只能用于整数


3、🎯结论

👉浮点数不能位运算 → ❌



🧩 第6关:判断奇偶的秘诀

📜题目:
(x & 1) == 0 判断偶数

👉答案:✅ 对


1、🌈故事

汉克老师将10进制数字转成2进制数字:

6 = 110 5 = 101

2、🧠规则

👉看2进制数字最后一位:

  • 0 → 偶数

  • 1 → 奇数

x & 1

3、🎯结论

👉成立 → ✅




🌟《奇偶校验大冒险》


🎯 一、故事背景

1、在“数据王国”里,所有信息都会变成二进制传输:

例如:数字 5 → 101

2、👑国王布置了任务:

“数据在路上传输后要汇报一共有几个1,而且要知道是奇数个1还是偶数个”


🧠 二、规则讲解

1、📜规则

👉统计所有数字中:

二进制里“1”的总个数

2、然后判断:

  • 如果是奇数个1 → 输出校验码 = 1

  • 如果是偶数个1 → 输出校验码 = 0


🌈 三、举个完整例子

1、🎯输入

3 5 3 2

2、🧩 第一步:变成二进制

数字二进制1的个数
51012
3112
2101

3、🧩 第二步:统计总数

2 + 2 + 1 = 5

4、🧩 第三步:判断奇偶

5 是奇数 → 输出校验码 = 1

5、🎯输出

5 1

🧠 四、核心算法

1、我们要做三件事:


🥇步骤1:读入数据
cin >> n;

🥈步骤2:一个一个处理数字
for(int i = 0; i < n; i++)

🥉步骤3:数每个数字里的“1”
👉关键技巧来了!
while(x > 0) { count += (x & 1); x >>= 1; }

2、🌟重点解释!

(1)🧩 (x & 1) 是什么?

👉取最后一位!

6 = 110 → 最后一位是0 5 = 101 → 最后一位是1

(2)🧩 x >>= 1 是什么?

👉右移一位(去掉最后一位)

101 → 10 → 1 → 0

🎯 五、完整代码

#include <iostream> using namespace std; int main() { 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、🎭 故事

👉 有两个灯阵:

a = 1101 b = 1011

👉^是一种魔法:

👉不同亮 → 亮(1)
相同 → 灭(0)


3、✏️ 计算

1101 ^1011 ----- 0110

4、📌 结论

👉^是:

按位异或


5、🎉 答案:D



一、🧙‍♂️ 故事背景:魔法数字锁

小A来到了一个神秘宝箱前 🧰
宝箱上写着一行奇怪的咒语:

(x & i) + (x | i) == 2025

👉 只有找到最小的正整数i
👉 才能打开宝箱!


二、🎯 任务目标

👉 输入一个数字x
👉 找到最小的正整数i,让:

(x & i) + (x | i) == 2025

成立!

👉 如果找不到,就输出-1


三、算法分析:

1、🧠 第一步:认识两个魔法


(1)✨ 魔法1:&(按位与)

👉 规则:

1 & 1 = 1 其他情况 = 0

👉 就像:

👉 “两个人都同意,才亮灯💡”


(2)✨ 魔法2:|(按位或)

👉 规则:

有1就等于1

👉 就像:

👉 “只要有一个人同意,就亮灯💡”


2、🎭 第二步:进一步理解

假设:

x = 5 → 二进制 0101 i = 3 → 二进制 0011

✏️ 计算

① 按位与
0101 &0011 ----- 0001 → 1

② 按位或
0101 |0011 ----- 0111 → 7

③ 相加
1 + 7 = 8

👉 如果等于2025,就成功!

3、🧠 第三步:怎么找 i?


(1)🎯 关键思路

👉 i 是未知的
👉 我们可以使用枚举法一个一个试!


(2)🎭 故事

我们像一个小侦探 🕵️‍♂️

👉 从 i = 1 开始试:

试 1 ❌ 试 2 ❌ 试 3 ❌ …… 直到找到!

4、🧠 第四步:范围是多少?

我们可以:

for (int i = 1; i <= 2025; i++)

👉 为什么?

👉 因为要的结果是 2025,x | i 的结果是大于等于i,所以,最大搜索到2025足够了。
👉 超过就没必要了!


5、✏️ 第五步:完整代码

#include <iostream> using namespace std; int main() { 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 & 3 3 = 0011 -------- 0001 //结果是1,正确 5 = 0101 //5 | 3 3 = 0011 -------- 0111 //结果是7不是8,错误

3、只有 D 正确 ✔️



🌟 第6题:右移魔法(补码)

🎯 正确答案:B(-2)


1、🧠 故事

(1)一个负数:
11111101(补码)

👉 右移1位(>>1)


(2)规则:
👉符号位补1(因为是负数)

(3)结果:
11111110

4)👉 转回十进制 =-2

2、🎉 选 B



🌟 第8题:按位或(|)的魔法

🎯 正确答案:A


1、🧠 故事

(1)魔法:
a | 10

(2)👉 10(二进制) =1010

作用:
👉 把第2位(从右往左)变成1

👉 把第4位(从右往左)变成1


(3)所以:
👉 强制“第二位 = 1”,是正确的。

2、🎉 选 A



🌟 第5题:字符的输出

🎯 答案:✅️ 正确


1、🧠 看程序

char x=65; //x的二进制为00100001 x=x&00001111; //00001111是8进制数,转换10进制为585 ,65与585&的结果还是:00100001 cout<<x<<endl; //输出 A

2、 操作符 &


👉 & 的左右两侧要都是1才是1,有一个0 ,就是0。



🌟第5题:位运算 vs 逻辑运算

1、🎯故事

有两个魔法:

符号含义
&按位与
|按位或

2、🧠重点

(23 | 10)

👉 二进制:

23 = 10111 10 = 01010

👉 按位或:

11111 = 31

3、🎯答案 C

👉 ✅ (23 | 10) == 31



🌟第6题:位运算大考验

1、🎯故事

右移运算:

2 >> 2

👉 相当于:

2 / 4 = 0

2、🧠对比

1 >> 1 = 0

👉 所以:

(2 >> 2) == (1 >> 1)

3、🎯答案

B.(2>>2)和(1>>1)的值是一样的



🌟第7题:神秘交换术✨

1、🎯故事

有一个“无中间变量交换术”:

a ^= b; b ^= a; a ^= b;

2、🧠作用

👉 交换 a 和 b


3、🎯结论

👉 ✅ 实现变量交换


3、🎯答案

C.a和b的值交换



🌟第8题:控制最低位

1、🎯故事

有个魔法

a & ~1

2、🧠分析

1 = 0001 ~1 = 1110

👉 所以:

a & 1110

3、🎯效果

👉 把最后一位变成 0!


4、🎯答案 C

👉 ✅ 使最低位为0



🌟 第9题:左移魔法(位运算)

1、🧙‍♂️故事:

(1)小法师拿到一个二进制宝石:
a = 1010 1110

2)国王说:“把它左移2位!”

👉 左移规则(重点!!):

  • 左边的位丢掉 ❌

  • 右边补0 ✅


2、🎯 操作过程:

原来:1010 1110 左移2:1011 1000

3、✅ 正确答案:A、a的值变为1011 1000



🌟 第10题:按位与的秘密

1、🧙‍♂️故事:

有两个魔法:

result = a & b result2 = a2 & b2

2、第一部分:

a = 123 b = 1 result = 123 & 1

👉 所以结果 =1


3、第二部分:

a2 = -123 b2 = -1(无符号)

👉 -1 的二进制是:全1!

👉 所以:

任何数 & 全1 = 原数

👉 result2 = -123


4、✅ 正确答案:D(1 -123)


http://www.cnnetsun.cn/news/1802926.html

相关文章:

  • 百考通:AI精准赋能,打破传统学术写作的壁垒
  • 【AI原生研发工具链2026权威选型白皮书】:覆盖LLM编排、智能测试、语义CI/CD与Agent化运维的7大维度实测对比
  • 国产操作系统SSD的工程权衡:四款热门型号横向测评(含湖南天硕技术拆解)
  • AI专著生成新玩法!借助工具,短时间打造专业学术专著
  • 比迪丽AI绘画模型.NET集成开发:企业级应用方案
  • 基于uA741的波形变换电路设计与Multisim仿真优化
  • C++移动语义与完美转发在资源管理类设计中的最佳实践模式
  • BMS硬件版与软件版:从电路板到代码,如何选择你的电池守护者?
  • 别等延毕才后悔!大论文送审前一定要自查的几点
  • 高精度生菜生长阶段识别系统:YOLO26s在5类周期检测中的实现与评估(免费获取模型)
  • 别再花钱买企业邮箱了!手把手教你用Cloudflare邮件路由免费搞定个性化域名邮箱(支持Gmail/Outlook发信)
  • 解决iOS下小程序createInnerAudioContext无声问题的3种实用方案
  • Windows内核驱动手动映射终极指南:KDMapper完全攻略
  • 保姆级教程:用华为eNSP模拟器搞定USG6000V防火墙多区域实验(含完整拓扑与配置)
  • day03统计师考试(初级)变量与数据
  • BepInEx:Unity游戏模组开发的终极框架指南
  • 使用DuMate帮助创建 Python 3.9 环境并部署 Kotti CMS
  • 如何选择最适合你的macOS开源RSS阅读器:从入门到精通的完整指南
  • ComfyUI TensorRT加速:告别漫长等待,解锁NVIDIA显卡的终极AI创作性能
  • 007、微服务架构设计与服务拆分策略
  • 优化MacOS终端显示:自定义PS1变量提升效率
  • AD25 — 关闭实时DRC
  • HTML转Figma:打破设计与开发边界的下一代工具
  • ECharts实战:如何用三角形标记突出关键数据点(附完整代码)
  • ESP32与多传感器融合实现智能环境监测系统搭建指南
  • Unity Asset Store 资源导入实战:从筛选到场景应用一站式指南
  • R 4.5深度学习集成终极清单:11个已验证兼容组合(含CUDA 12.4/Torch 2.3/RcppTorch v0.9.2版本矩阵)
  • 视频修复终极实战:Untrunc高效恢复损坏MP4文件完整指南
  • MGeo模型效果对比:MGeo-base在1000条测试集上较BERT-base地址解析F1提升12.6%
  • Unpaywall浏览器扩展:快速免费获取学术文献的完整指南 [特殊字符]