0

重複の可能性:
数値が2の累乗であるかどうかを確認する方法

この質問はインタビューで尋ねられました。

2^n数値が{1、2、4、8、16、32、....}の形式であるかどうかを確認する方法

、、、、、演算子を使用せ *ずに/+-%

また、ループも使用できません。

4

2 に答える 2

15

バイナリ表現に正確に1ビットが設定されているかどうかを確認してください。

于 2012-08-06T07:42:55.723 に答える
9

n & (n - 1) == 0演算子を使用しない方法で変換された、古き良きを使用します-

int powerOfTwo(int number)
{
    int numberMinusOne = --number;
    ++number;

    if (number == 0)
        return 0;

    return (number & numberMinusOne) == 0;
}
于 2012-08-06T08:01:55.137 に答える