ホームページ > バックエンド開発 > C++ > 数値が2の電力であるかどうかを効率的に判断する方法は?

数値が2の電力であるかどうかを効率的に判断する方法は?

Linda Hamilton
リリース: 2025-01-29 19:41:09
オリジナル
367 人が閲覧しました

How to Efficiently Determine if a Number is a Power of 2?

多くの数字が2 質問: フローティングポイント操作または変位操作を使用せずに、指定された数値が2であるかどうかを効率的に判断する方法は?

回答:

シンプルで効率的なアルゴリズムは次のとおりです。

説明:

ビットと各桁のコンポーネント(&)の比較の両方の数字が1の場合、1、戻る1、それ以外の場合は0。数値から1を縮小することにより、バイナリ番号を作成します。最小有効位置(元の数字に設定されたビットが1に設定)は1に設定されます。元の数値が2の電力である場合、マイナス1は最高の設定位置の右側のすべての位置を削除し、操作と操作の結果は0になります。それどころか、元の数値が2の電力でない場合、1つの減算後、数値のバイナリ表現は少なくとも2ビット1に設定され、結果と操作が非ゼロ値になります。 。

例:
<code class="language-c#">bool IsPowerOfTwo(ulong number)
{
    return (number != 0) && ((number & (number - 1)) == 0);
}</code>
ログイン後にコピー

番号8を考慮してください(バイナリ1000)。 1を減らして7(バイナリ0111)が1.8と7のビットと7セットしかありません。

注:

上記のアルゴリズムは0にtrueを返し、0は2のパワーではありません。 0を除外する場合は、次のようにアルゴリズムを変更できます。

以上が数値が2の電力であるかどうかを効率的に判断する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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