ホームページ > ウェブフロントエンド > jsチュートリアル > 数値が2のn乗であるかどうかを判断するjsの例

数値が2のn乗であるかどうかを判断するjsの例

小云云
リリース: 2017-12-07 16:00:49
オリジナル
2395 人が閲覧しました

方法 1

数値が 2 の n 乗であるかどうかを判断するにはどうすればよいですか?剰余が 0 である場合は、最終値が num=1 になるまで前のステップを続けます。

例:

2 2%2=0 (2/2)=1 はい

4 4%2=0 (4/2)%2=0 (4/2/2)=1 はい

6 6%2=0 (6/2)%2=1 ではない

7 7%2=1 ではない

24 24%2=0 (24/2)%2=0 (24/2/2) ) %2=0 (24/2/2/2)%2=1

ではありません コード実装:


function check(num){
 if(num != 1){
  while(num != 1){
   if(num%2 == 0){
    num = num / 2;
   }else{
    return false;
   }

  }
  return true;
 }else{
  return true;
 }
}
ログイン後にコピー


結果は次のようになります:

方法 2

バイナリ法を使用して、数値 num が 2 の n 乗であるかどうかを判断できます。ルールは、2 のべき乗である限り、最上位ビットが 1 であり、残りが 1 でなければならないことがわかります。 num-1 の場合、最上位ビットは 0、残りは 1 になります。

ビットごとの AND 演算: 1&1=1 0&1=0 0&0=0 1&0=0

2 ---> 10 3 3 ---> 11

4 ---> 100 6 ---> 1000 7 ---> 111

8 -1 の 2 進数 0111 ビット単位の AND 演算 1000&0111 -- > 0000 つまり、8 は 2 の n 乗です。

9 のバイナリ 1001 9-1 のバイナリ 1000 ビット単位の AND 演算 1001&1000 ---> 1000 したがって、9 は 2 の累乗ではありません。

24 の 2 進数 11000 24-1 の 2 進数 10111 ビット単位の AND 演算 11000&10111 ---> 10000 したがって、24 は 2 の累乗ではありません。

num.toString(2) を通じて num のバイナリを書き込むことができます。

コードの実装:

function check(num){
 return (num > 0) && ((num & (num - 1)) == 0);
}
ログイン後にコピー

結果は次のとおりです:



さらに、1は2の0乗でもあります。

他にも書き出されていない条件があります。この方法は数値が2のn乗であるかどうかを判定するものであり、数値が整数であるかどうかを書き出すものではありません。可能であれば、自分で条件判定を追加してください。

関連する推奨事項:

JS が貪欲アルゴリズムを使用して変更問題を解決する方法

空の文字列かどうかを判断するための JS 省略メソッドの詳細な例

PHP と JS は文字列が数値かどうかを判断する

以上が数値が2のn乗であるかどうかを判断するjsの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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