c++ n &1和n>>=1是什么意思?[duplicate]

llmtgqce  于 2022-11-19  发布在  其他
关注(0)|答案(2)|浏览(255)

此问题在此处已有答案

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;
}
rhfm7lfc

rhfm7lfc1#

if (n&1)

通过执行按位与来检查n是否为奇数。

n>>=1;

n的位右移一位。

fhg3lkii

fhg3lkii2#

&是一个按位AND运算符,它对表达式求值为true或false(当表达式是条件表达式时),它与x % 2非常相似,即以下条件:

if (n & 1) {
    //...
}

// is equal to

if (n % 2) {
    // ...
}

OTOH,n >>= 1n右移一位。

相关问题