AND 运算符
Coddy 位运算 课程的第 5 课,共 17 课。
与( &)运算符
按位与是一种二元运算符,对两个等长的位模式进行运算。如果两个位模式在比较位置上的位都是 1,那么结果位模式中的对应位就是 1,否则就是 0。 '&' 符号表示与运算符。
下表展示了两个位的与运算。
| x | 0 | 0 | 1 | 1 |
| y | 0 | 1 | 0 | 1 |
| x & y | 0 | 0 | 0 | 1 |
我们来看一个例子,更好地理解与运算。

在上面的例子中,我们对 (11)10 和 (6)10 进行了与运算,结果是 (2)10。我们只需将这些数写成二进制形式,然后比较这两位。如果其中有任何一位是 0,就在结果位模式中写入 0。
用法:
int a = 1;
int b = 0;
>> a & b
OUTPUT: 0挑战
简单Tim 徒步穿越山洞时,发现了一些石头,上面写着数字。所有石头都按顺序排列。在石头附近,他发现了一本神秘的日记,上面写着这些石头具有魔力,并提到了一些施展魔法的条件。这些条件是:
- 魔法石每组有 2 块。
- 必须连续选取石头,并且每组不能包含之前选过的石头。
- 第三个条件已经无法辨认。因此,Tim 用这些石头做了实验,发现只有当对一组中出现的数字执行 AND 运算后结果为 0 时,石头才会施展魔法。
找出施展了魔法的那组石头,并输出该组第一块石头上写的数字。
例如,假设他发现的石头排列如下:
[ 5 , 2 , 3 , 6 , 1 , 9 ]首先,Tim 将这些石头连续分成不重复的 2 块一组:{ (5,2) , (3,6) , (1,9) }
然后,他对这些组执行 AND( & )运算,发现第一组会施展魔法。5=> (101)2 ,2=>(010)2。这三组中,只有这一组执行 AND 运算后结果为 0。
我们得到的输出是 5,因为要识别这组石头,需要输出组中第一块石头上的数字。
还要注意,所有序列都包含偶数个元素,并且对于给定的序列,始终只有一组会施展魔法。你的挑战是完成函数 "MagicStones",找出 Tim 发现的魔法石组。
亲手试试
#include <iostream>
#include <vector>
using namespace std;
int MagicStones(vector<int> stone_sequence) {
// 在这里编写代码
}位运算中的所有课
自己练习: C++ 在线编译器
检查进制转换: 进制转换器