方法 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 省略メソッドの詳細な例
以上が数値が2のn乗であるかどうかを判断するjsの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。