ホームページ > バックエンド開発 > C++ > 数字は2のパワーですか? 少しだけアプローチ

数字は2のパワーですか? 少しだけアプローチ

Linda Hamilton
リリース: 2025-01-29 19:31:08
オリジナル
737 人が閲覧しました

Is a Number a Power of 2?  A Bitwise Approach

数字が2であるかどうかを判断する力

多くの数字が2であるかどうかを判断するには、効率的で正確なアルゴリズムが必要です。この記事では、ビット操作に基づいてアルゴリズムを紹介します。 このアルゴリズムは、操作数のバイナリ表現を比較する位置と動作記号(&)を使用します。具体的には、1縮小の結果と減少の結果の結果、入力数がゼロかどうかを確認しました。数値が2の電力である場合、デュアルプルーフの最低レベルを除き、残りは0です。マイナス1の動作は最低レベルを0に変換するため、最低位置を除くすべてのビットは0になります。入力数が2の電力である場合、計算の結果はゼロになります。 たとえば、

番号4を考慮してください。2の力です。 4のバイナリは100で表されます。マイナス1は3を取得し、そのバイナリは011.100および011として表され、位置と動作の結果は000です。結果はゼロであるため、4が2のパワーであることが確認されています。

このアルゴリズムは計算効率が高く、与えられた数値が2のパワーであるかどうかを確認する信頼できる方法を提供します(0を除く)。ゼロが必要な場合は、コードフラグメントの最初の行に示すように、単純な非ゼロ検査を追加するだけです。
bool IsPowerOfTwo(unsigned long long x)
{
    return (x != 0) && ((x & (x - 1)) == 0);
}
ログイン後にコピー

以上が数字は2のパワーですか? 少しだけアプローチの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート