機能の説明
Bitwise Calculator は、8 / 16 / 32 / 64 ビット幅の値に対して、幅マスク付きの正確なビット演算を行います。オペランドは 2 進・8 進・10 進・16 進で入力でき(各オペランドはそれぞれ自分の基数を保持します)、結果はすべての基数で同時に読めます。貼り付け固定の結果パネルには、アクティブな演算子と幅のバッジ(例:XOR · 8-bit)と、どのビットが立っているかを正確に示すライブのビットグリッドが付きます。対応する演算は AND、OR、XOR、NOT(単項)、SHL / SHR(論理シフト)、そして ROL / ROR(選択した幅の中でラップするローテート)です。すべての計算は bigint 上で実行されるため、浮動小数点の丸めは一切なく、結果は正確です。すべてブラウザーの中で完結します。
演算子リファレンス
| 演算子 | 記号 | 入力 | 機能 |
|---|---|---|---|
| AND | & |
A と B | 両方のオペランドが 1 のビットが 1 — ビットのマスクと抽出 |
| OR | | |
A と B | どちらかのオペランドが 1 のビットが 1 — ビットの設定と結合 |
| XOR | ^ |
A と B | オペランド間で異なるビットが 1 — ビットのトグル |
| NOT | ~ |
A のみ | 選択した幅の中で全ビットを反転(オペランド B は無視されます) |
| SHL | << |
A、回数 B | A を B だけ左シフト。右から 0 が入り、幅を超えたビットはマスクで落ちます |
| SHR | >> |
A、回数 B | B だけの論理右シフト。左から 0 が入ります |
| ROL | ⟲ |
A、回数 B | B mod width だけ左へローテート。上位から出たビットは下位に再び入ります |
| ROR | ⟳ |
A、回数 B | B mod width だけ右へローテート。下位から出たビットは上位に再び入ります |
使い方
- ツールはライブサンプル(8 ビットで 16 進
CAと35のXOR)で開くため、最初の描画時点で計算結果があります。どちらかのオペランドを編集すると、パネルは即座に更新されます。 - ツールバーから幅(8/16/32/64 ビット)を選びます。すべての値と結果がマスクされます。
- 演算子行から演算を選びます(
ANDからRORまで)。NOTを選ぶとオペランド B は無効になります。 - Operand A を入力します(二項演算では Operand B も。シフトとローテートでは B が回数です)。各オペランドの上にある
BIN/OCT/DEC/HEXスイッチでその基数を設定します。0x/0b/0oのようなプレフィックスは自動的に剥がされます。 - 結果パネルを読みます。Decimal、Hex、Octal、Binary の各行にビットグリッド(MSB が左、LSB が右、ハイライトされたビットが立っています)。Copy result は 4 行すべてをコピーします。Copy share link は計算全体を URL にエンコードします。
- Sample は内蔵の例を復元し、Clear は両オペランドを空にします。
例
以下の値はすべて、該当する入力に対するツールの実際の出力です。
16 進 2 バイトの XOR(8 ビット)— デフォルトのサンプル
width: 8-bit op: XOR
A (hex): CA → 1100 1010
B (hex): 35 → 0011 0101
result: dec 255 · hex 0xff · oct 0o377 · bin 1111 1111 (every bit set)
AND でマスク(32 ビット)
A (hex): DEADBEEF B (hex): 0000FFFF
result: dec 48879 · hex 0x0000beef · bin 0000 0000 0000 0000 1011 1110 1110 1111
NOT とシフト(8 ビット)
op: NOT A (hex): 0F, B: - → dec 240 · hex 0xf0 · bin 1111 0000
op: SHL A (hex): 01, B (dec): 4 → dec 16 · hex 0x10 · bin 0001 0000
op: SHR A (hex): 08, B (dec): 1 → dec 4 · hex 0x04 · bin 0000 0100
ローテートは幅の中でラップする(8 ビット)
op: ROL A (hex): 80, B (dec): 1 → dec 1 · hex 0x01 · bin 0000 0001
(1000 0000 rotated left by 1: the top bit wraps around to bit 0)
op: ROR A (hex): 01, B (dec): 1 → dec 128 · hex 0x80 · bin 1000 0000
(0000 0001 rotated right by 1: bit 0 wraps around to the top)
負のオペランドは正規化される(8 ビット)
A (dec): -1 op: AND B (dec): 1
result: dec 1 · hex 0x01 · bin 0000 0001
(-1 becomes 1111 1111, the 8-bit two's-complement pattern, before the op)
補足事項
- 2 の補数マスキング: すべての値は演算前に符号なしの幅ビットパターンへ正規化され、結果はマスクされて戻ります。そのため 8 ビットの
NOT 0x0Fは0xf0であり、巨大な負数には決してなりません。8 ビットの-1は0xffとして振る舞います。 - シフトはオーバーフローを切り捨てます: 8 ビットの
0xFF << 1は0xfeです。幅を超えて押し出されたビットは消え、ネイティブな固定幅整数とまったく同じです。 - ローテートはラップします:
ROL/RORはcount mod widthで回すため、幅ちょうどのローテートは無操作になります。 - 共有可能: オペランド、基数、演算、幅はすべて URL にエンコードされます。リンクを開けば、その計算が正確に復元されます。
- プライベート: すべての計算はローカルです。何も送信されません。
- 関連ツール: Number Base Converter、JSON Formatter、Cron Expression Explainer。