Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

JavaScriptのビット演算を使用して2の累乗をチェック


数値を取り込んで2の累乗かどうかを判断するJavaScript関数を作成する必要があります。

例-

f(23) = false
f(16) = true
f(1) = true
f(1024) = true

アプローチ-

バイナリ形式の2の累乗には、常に1ビットしかありません。このように-

1: 0001
2: 0010
4: 0100
8: 1000

したがって、数値がゼロより大きいことを確認した後、ビット単位のハックを使用して、1ビットのみが設定されていることをテストできます。同じことが以下に示されています-

num & (num - 1)

以下はコードです-

const num1 = 256;
const num2 = 1024;
const isPowerOfTwo = (num = 1) => {
   if (num < 1) {
      return false;
   };
   return (num & (num - 1)) === 0;
};
console.log(isPowerOfTwo(num1));
console.log(isPowerOfTwo(num2));
console.log(isPowerOfTwo(1));
console.log(isPowerOfTwo(23));

出力

以下はコンソールでの出力です-

true
true
true
false

  1. JavaScriptのインポートで「{}」を使用しますか?

    以下は、javaScriptインポートで{}を使用するコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style>  

  2. ビット演算を使用した2による加算と乗算のCプログラム。

    ビット演算子はビットを操作します(つまり、onオペランドのバイナリ値を操作します) オペレーター 説明 & ビットごとのAND | ビットごとのOR ^ ビット単位のXOR < 左シフト 右シフト - 1の補数 ビットごとのAND a b a&b 0 0 0 0 1 0 1 0 0 1 1 1 ビットごとのOR a b a | b 0 0 0 0 1 1 1 0