JavaScriptのカンマ演算子とビット演算子

JavaScriptのカンマ演算子とビット演算子

JavaScriptのカンマ演算子とビット演算子について

JavaScriptには複数の特殊な演算子が存在します。その中でもカンマ演算子 (,) とビット演算子 (&, |, ^, ~, <<, >>, >>) は、少し理解しにくいですが、正しく使えば強力なツールとなります。このページでは、それぞれについて詳細に解説し、豊富な例を示します。

カンマ演算子

カンマ演算子は、複数の式を1つの式として評価し、最後の式の結果を返します。主にコンパクトな記述が必要な場合に使われます。

使用例


// 複数の式を一度に評価
let x = (1, 2, 3); // xには3が代入される
console.log(x); // 出力: 3

// forループでの使用
for (let i = 0, j = 10; i < 5; i++, j--) {
    console.log(i, j);
}
// 出力: (0, 10), (1, 9), (2, 8), (3, 7), (4, 6)
    

カンマ演算子は、可読性を損なう場合があるため、注意して使う必要があります。

ビットAND演算子 (&)

ビットAND演算子は、対応するビットが両方とも1の場合にのみ1を返します。

使用例


console.log(5 & 3); // 出力: 1 (0101 & 0011 = 0001)

console.log(12 & 9); // 出力: 8 (1100 & 1001 = 1000)
    

ビットOR演算子 (|)

ビットOR演算子は、対応するビットのどちらか一方が1の場合に1を返します。

使用例


console.log(5 | 3); // 出力: 7 (0101 | 0011 = 0111)

console.log(12 | 9); // 出力: 13 (1100 | 1001 = 1101)
    

ビットXOR演算子 (^)

ビットXOR演算子は、対応するビットが異なる場合に1を返します。

使用例


console.log(5 ^ 3); // 出力: 6 (0101 ^ 0011 = 0110)

console.log(12 ^ 9); // 出力: 5 (1100 ^ 1001 = 0101)
    

ビットNOT演算子 (~)

ビットNOT演算子は、各ビットを反転させます(1を0に、0を1に)。

使用例


console.log(~5); // 出力: -6 (~0101 = 1010, 2の補数表現で-6)

console.log(~0); // 出力: -1
    

左シフト演算子 (<<)

左シフト演算子は、指定したビット数だけビットを左に移動させます。右側には0が埋められます。

使用例


console.log(5 << 1); // 出力: 10 (0101 << 1 = 1010)

console.log(3 << 2); // 出力: 12 (0011 << 2 = 1100)
    

算術右シフト演算子 (>>)

算術右シフト演算子は、指定したビット数だけビットを右に移動させます。左側には符号ビットが埋められます。

使用例


console.log(5 >> 1); // 出力: 2 (0101 >> 1 = 0010)

console.log(-5 >> 1); // 出力: -3 (符号ビットが保持される)
    

論理右シフト演算子 (>>>)

論理右シフト演算子は、指定したビット数だけビットを右に移動させます。左側には常に0が埋められます。

使用例


console.log(5 >>> 1); // 出力: 2 (0101 >>> 1 = 0010)

console.log(-5 >>> 1); // 出力: 2147483645 (32ビット符号なし整数として扱われる)
    

まとめ

カンマ演算子とビット演算子は、適切に使えば効率的なコードを書くのに役立ちます。それぞれの特性と注意点を理解し、実際のコードで活用してみてください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です