ちょっと私は簡単な質問があります:
intがaであるかどうかを調べるにはどうすればよいですか 2のべき乗 ビットワイズ演算子を使用して(正の1ビットのみ)、 O(1) 何もせずに IF 文またはその他のタイプの ブーリアン 表現?
メソッドは整数値を返す必要があります。
メソッドは特定の数を返すことができそれは2のべき乗を意味し、2のべき乗ではないことを意味する別の数値を意味します。
また あなたはintが32ビットを持っているという事実に頼ることはできません。
これは私がインタビューで尋ねられた質問です。
回答:
回答№1は4減算が受け入れられるならば、あなたはただ使うことができます x & (x - 1)
これは2のべき乗に対して0を与え、そうでなければ> 0を与えます。それが純粋にビット単位の解決策である必要があるなら、あなたはそれを実装する必要があるでしょう - 1
2の補数算術の通常の方法でビット演算子を使って。