- 按位与运算符为:&
- 功能:参加运算的两个数据,按二进制位进行“与”运算。
- 运算规则:
0 & 0 = 0
,0 & 1 = 0
,1 & 0 = 0
,1 & 1 = 1
。即:两位同时为 1,结果才为 1,否则为 0。 例如:
#include<iostream>
using namespace std;
int AndOperator(int &a, int &b)
{
return a & b;
}
int main()
{
// 3&5 即 0000 0011 & 0000 0101 = 0000 0001 因此,3&5的值为1
int a = 3, b = 5;
cout << AndOperator(a, b) << endl; // 1
return 0;
}
- 负数按补码形式参加按位与运算。例如:
-3 & 5
即 1111 1101 & 0000 0101 = 0000 0101
因此,-3 & 5的值为5
- “与运算”的特殊用途:
-
清零。如果想将一个单元清零,也就是其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。例:3 & 0 = 0
-
取一个数的指定位。指定位置为1,其余为0。
例:设 X = 10101110,
取X的低4位: X & 0000 1111 = 0000 1110
取X的第5位: X & 0000 1000 = 0000 1000 -
判断奇偶 :根据未位是0还是1来决定,为0就是偶数,为1就是奇数。因此可以用if (a & 1 == 0) 代替 if (a % 2 == 0)来判断a是不是偶数。下面程序将输出0到50之间的所有奇数。
#include<iostream>
using namespace std;
int main()
{
for (int i = 0; i < 50; ++i)
{
if (i & 1)
{
cout << i << " ";
}
}
cout << endl;
return 0;
}