計算ツールズ
ビット演算シフトマスク2進数

ビット演算とシフトの計算

【ご注意】このページの計算結果・情報は参考値です。正確性・最新性は保証できません。税務・法務・お金・設計・施工・安全などに関わる判断は、公式の資料と専門家の確認のうえ、ご自身の責任で行ってください。免責事項

2つの数のAND・OR・XOR・NOTと左右のビットシフトを同時に計算し、2進数の並びを4桁ごとに区切って表示します。マスク処理やフラグの操作、シフトが掛け算・割り算に対応することを目で確かめられます。

最終更新:2026-09-18/監修:計算ツールズ編集部

ビット演算とシフトの計算ツール

4つの演算

ビット演算は2進数の同じ位置どうしを1桁ずつ比べます。AND は両方が1のときだけ1、OR はどちらかが1なら1、XOR は異なるときだけ1、NOT は0と1をすべて反転します。既定値の A=204(1100 1100)と B=170(1010 1010)では、AND が 1000 1000=136、OR が 1110 1110=238、XOR が 0110 0110=102 になります。

シフトはビットの並びを左右にずらす操作です。左に1つずらすと各桁の重みが2倍になるので値も2倍、右に1つずらすと2で割って小数を切り捨てた値になります。2ビット左にシフトすれば4倍です。掛け算や割り算より速く処理できるため、古くから使われてきました。ただし左シフトでビット幅からあふれた分は消えるので、桁あふれに注意が必要です。

ビット演算の真理値表

ABANDORXORNOT A
000001
010111
100110
111100

実務でのよくある使い方

やりたいこと書き方意味
特定のビットを取り出す値 AND マスクマスクで1にした桁だけ残す
特定のビットを立てる値 OR マスクマスクで1にした桁を1にする
特定のビットを反転する値 XOR マスクマスクで1にした桁だけ反転
特定のビットを落とす値 AND (NOT マスク)マスクで1にした桁を0にする
2ⁿ倍する値 を左へ n シフト掛け算より速い
2ⁿで割る(切り捨て)値 を右へ n シフト割り算より速い
偶数か判定する値 AND 1 が0か最下位ビットを見る
2つの値を交換するXOR を3回一時変数が要らない

マスクの作り方(8ビット)

目的2進数10進数16進数
最下位ビットだけ0000 000110x01
下位4ビット0000 1111150x0F
上位4ビット1111 00002400xF0
3番目のビットだけ0000 010040x04
すべて1111 11112550xFF

※入力した文字列はお使いのブラウザの中だけで処理され、サーバーには送信されません。結果は参考です。業務システムへの適用にあたっては、実装側の仕様をご確認ください。

ビット演算とシフトの計算の詳しい解説

ビット演算は、数を数として扱うのではなく、0と1が並んだ旗の列として扱う操作です。同じ位置のビットどうしを1桁ずつ比べるだけなので、計算そのものは極めて単純で、コンピュータにとっては足し算より速い処理になります。用途は大きく2つあり、ひとつは複数の真偽値をまとめて1つの数に詰め込むフラグ管理、もうひとつは数値の特定の部分だけを取り出したり書き換えたりするマスク処理です。

フラグ管理の考え方はこうです。8つの設定項目があるとき、それぞれを別の変数に持つ代わりに、1バイトの各ビットに割り当てます。1番目の設定を有効にしたければ OR で該当ビットを1にし、無効にしたければ AND と反転マスクで0にします。ある設定が有効かを調べるには AND を使い、結果が0でなければ立っている、と判断します。ファイルの権限や、機器の状態を表すステータスレジスタは、この方式で作られています。

マスク処理は、数値の一部だけを扱いたいときに使います。色を表す 0xFF8800 という値から緑の成分だけを取り出したければ、8ビット右にシフトしてから 0xFF と AND を取ります。シフトで目的の位置まで持ってきて、マスクで余分を切り落とす、という2段構えが定石です。IPアドレスとサブネットマスクの関係も同じで、AND を取ることでネットワーク部だけが残ります。

XOR には独特の性質があります。同じ値で2回 XOR すると元に戻るため、簡易な暗号や、一時変数を使わない値の交換に使われてきました。また、あるビットだけを反転させたいときにも便利です。ただし暗号として使うには弱すぎるため、本格的な秘匿には使えません。チェックサムやパリティの計算で使われるのは、この可逆性と計算の軽さのためです。

シフトで注意すべきは、あふれた分が消えることです。8ビットの箱で 1100 1100 を2つ左にシフトすると、左端の 11 は箱から出て失われ、0011 0000 になります。値としては 204×4=816 のはずが 48 になってしまいます。掛け算の代わりにシフトを使うときは、結果がビット幅に収まるかを必ず確認してください。右シフトでは逆に、あふれるのではなく小数部分が切り捨てられます。負の数を扱う場合は、符号ビットをどう扱うかで算術シフトと論理シフトに分かれ、言語によって既定の動作が違う点にも注意が要ります。

業界・現場での使い方

設定フラグの管理

複数の真偽値を1つの数に詰め、OR で立てて AND で判定します。

色の成分の取り出し

シフトとマスクを組み合わせて、RGB の各成分を個別に取り出します。

ネットワークの計算

IPアドレスとサブネットマスクの AND でネットワーク部を求めます。

組み込み機器の制御

レジスタの特定ビットだけを読み書きして、機器の状態を操作します。

よくある間違い・注意点

  • 左シフトで桁あふれに気づかない — ビット幅からあふれた分は消えます。204を8ビットで2つ左にシフトすると48になります。
  • AND と OR を取り違える — ビットを取り出すのは AND、立てるのは OR です。
  • ビットを落とすのに AND と NOT を忘れる — 落とすときは AND (NOT マスク) です。OR では落とせません。
  • XOR を暗号として使う — 同じ鍵で繰り返すと簡単に破られます。本格的な秘匿には使えません。
  • 負の数の右シフトを言語共通だと思う — 算術シフトと論理シフトがあり、言語や型で動作が違います。

関連する規格・公的資料

※本ツールは公的基準に基づく参考計算です。医療・法務・税務の判断は最新の告示・規格および専門家の判断に従ってください。

よくある質問(FAQ)

AND と OR の違いは何ですか?

AND は両方が1のときだけ1、OR はどちらかが1なら1です。取り出すのが AND、立てるのが OR です。

既定値の計算結果は?

A=204(1100 1100)とB=170(1010 1010)で、AND が136、OR が238、XOR が102 になります。

左シフトは何倍になりますか?

1つで2倍、n個で2ⁿ倍です。ただしビット幅からあふれた分は消えます。

右シフトは割り算ですか?

2ⁿで割って小数を切り捨てた値になります。

特定のビットだけ0にするには?

AND と反転したマスクを使います。OR では0にできません。

立っているビットの数を数えるのは何に使いますか?

誤り検出のパリティや、集合の要素数を数える用途があります。

XOR で値を交換できるのはなぜですか?

同じ値で2回 XOR すると元に戻る性質があるためです。一時変数が要りません。

マスクはどう作りますか?

取り出したい桁を1にした数です。下位4ビットなら 0x0F、上位4ビットなら 0xF0 です。

負の数も計算できますか?

このツールは0以上を対象にしています。負の数は2の補数として進数変換ツールで確認してください。