ビット演算とは何か:&・|・<<・>> の基本

入門 | 11分 で読める | 2026.06.17

公式ドキュメント

ビット演算とは、数値を2進数のビット列として見て、各ビットに対して行う演算です。

一言でいうと

ビット演算は、数値を0と1の並びとして扱い、特定のビットが立っているか、特定の範囲だけ取り出す時に使います。

代表的な演算子

演算子名前
&AND両方が1のビットだけ1
|ORどちらかが1なら1
^XOR片方だけ1なら1
~NOT0と1を反転
<<左シフト左へビットをずらす
>>符号付き右シフト右へビットをずらす
>>>符号なし右シフト0埋めで右へずらす

ANDでビットを取り出す

& は、特定のビットだけを見る時によく使います。

const value = 0b10101100;
const mask = 0b00001111;

console.log((value & mask).toString(2)); // 1100

このように、マスクを使って必要な部分だけを残せます。

文字コード判定での例

ASCII範囲かどうかを見る例です。

function isAsciiCode(code) {
  return (code & 0xff80) === 0;
}

console.log(isAsciiCode("A".charCodeAt(0))); // true
console.log(isAsciiCode("あ".charCodeAt(0))); // false

ただし、可読性のためには次のような範囲比較の方が読みやすいことも多いです。

function isAsciiCodeReadable(code) {
  return code >= 0x00 && code <= 0x7f;
}

シフト演算

シフト演算は、ビットを左右へずらします。

console.log(1 << 3); // 8
console.log(8 >> 1); // 4

左へ1つずらすと、おおむね2倍になります。右へ1つずらすと、おおむね半分になります。ただし、符号や32ビット整数変換に注意が必要です。

JavaScriptでの注意

JavaScriptの数値は通常Numberですが、ビット演算では32ビット整数として扱われます。

console.log(0xffffffff | 0); // -1

大きな数値や符号を扱う時は、意図しない結果になることがあります。

JavaScriptのビット演算は32ビット整数に変換されるため、大きな数値処理では注意します。

使う場面

場面
フラグ管理権限や状態をビットで持つ
低レベル処理バイナリデータを読む
色の分解RGB値から各成分を取り出す
文字コード処理範囲や上位ビットを見る
パフォーマンス実験正規表現以外の判定を試す

よくある誤解

誤解実際
ビット演算は必ず速いJIT最適化や処理内容によります
ビット演算は可読性も高い初心者には読みにくいことが多いです
`
&&& は同じ& はビットAND、&& は論理ANDです

まとめ

ビット演算は、数値を0と1の並びとして扱う演算です。特定ビットの抽出や低レベル処理では便利ですが、JavaScriptでは32ビット整数変換や可読性に注意します。実務では、速さだけでなく読みやすさも含めて使うか判断します。

参考リソース

← 一覧に戻る
PR
PR
PR
PR