返回 课程

信奥AC之路-3级

0% 完成
0/0 步骤
  1. 第一课:数组基础
    4 主题|小节
  2. 第二课:数组基础二
    6 主题|小节
  3. 第三课:数组基础三
    6 主题|小节
  4. 第四课:数组基础四
    7 主题|小节
  5. 第五课:数组基础五
    5 主题|小节
  6. 第六课:数组用于统计,去重,排序
    5 主题|小节
  7. 第七课:冒泡排序
    6 主题|小节
  8. 第八课:数组连续性元素
    6 主题|小节
  9. 第九课:数组综合一
    7 主题|小节
  10. 第十课:字符数组
    7 主题|小节
  11. 第十一课:字符数组基础应用
    5 主题|小节
  12. 第十二课:字符数组基础应用二
    6 主题|小节
  13. 第十三课:字符数组进阶
    6 主题|小节
  14. 第十四课:字符串进阶二
    6 主题|小节
  15. 第十五课:字符串(STL)
    9 主题|小节
  16. 第十六课:字符串基础
    6 主题|小节
  17. 第十七课:字符串函数
    6 主题|小节
  18. 第十八课:字符串函数二
    4 主题|小节
  19. 第十九课:sort函数
    7 主题|小节
  20. 第二十课:字符串进阶
    7 主题|小节
  21. 第二十一课:字符串进阶二
    6 主题|小节
  22. 第二十二课:进制转换--十进制转其他进制
    5 主题|小节
  23. 第二十三课:进制转换--其他进制转十进制
    5 主题|小节
  24. 第二十四课:二进制,八进制,十六进制转换
    5 主题|小节
  25. 第二十五课:数据编码基础
    6 主题|小节
  26. 第二十六课:位运算基础
    6 主题|小节
课 26, 主题|小节 2
进行中

26.2 或运算(_) – 开关任意开启

2025年9月22日
课 进展
0% 完成

“或运算就像是两个开关并联控制一盏灯,”我解释道,”只要有一个开关打开,灯就会亮!在位运算中,只要有一个位是1,结果就是1。”

26.2.1 合并数字

题目描述: 小丽有两个特殊的数字,第一个数字只在二进制的偶数位上有1(第0位、第2位、第4位…),第二个数字只在二进制的奇数位上有1(第1位、第3位、第5位…)。现在她想把这两个数字合并成一个数字,使得新数字包含两个数字所有的1。

输入格式: 输入两个整数 a 和 b(0≤a,b≤255)。

输出格式: 输出合并后的数字。

样例输入

85 170

样例输出

255

样例说明

  • 85的二进制是01010101(偶数位上的1)
  • 170的二进制是10101010(奇数位上的1)
  • 合并后是11111111 = 255

代码实现

#include <iostream>
using namespace std;

int main() {
    int a, b;
    cin >> a >> b;
    
    // 使用或运算合并两个数字
    // 或运算会保留两个数中所有的1
    int r = a | b;
    
    cout << r << endl;
    
    return 0;
}

算法解析

  1. 或运算的规则:0|0=0, 0|1=1, 1|0=1, 1|1=1
  2. 只要有一个位是1,结果就是1
  3. 85 = 01010101,170 = 10101010
  4. 85 | 170 = 11111111 = 255
  5. 或运算实现了两个数字的”合并”效果