此问题在此处已有答案:
What is (x & 1) and (x >>= 1)?(5个答案)
两年前就关门了。
我正在做这个练习:https://www.hackerrank.com/challenges/30-binary-numbers/problem,我找到了这段代码,但我不明白条件n &1和n〉〉=1在这里有什么作用。
//C++ program to convert a decimal
// number to binary number
#include <iostream>
using namespace std;
int main()
{
int n,count=0,max=0;
cin >> n;
while(n)
{
if (n&1)
count++;
else
count = 0;
if (max < count)
max = count;
n>>=1;
}
cout << max;
return 0;
}
2条答案
按热度按时间rhfm7lfc1#
通过执行按位与来检查
n
是否为奇数。将
n
的位右移一位。fhg3lkii2#
&
是一个按位AND运算符,它对表达式求值为true或false(当表达式是条件表达式时),它与x % 2
非常相似,即以下条件:OTOH,
n >>= 1
将n
右移一位。