ビット単位計算機
整数に対してビット単位の AND、OR、XOR、NOT、シフト演算を実行します。バイナリ、16 進数、10 進数形式の結果を並べて表示します。
0x0000003C · 0b111100
0x0000000D · 0b1101
60 & 13 = 12
A0000 0000 0000 0000 0000 0000 0011 1100
B0000 0000 0000 0000 0000 0000 0000 1101
=0000 0000 0000 0000 0000 0000 0000 1100
Decimal
12
Hexadecimal
0x0000000C
Binary (short)
0b1100
Bitwise Operation Truth Table
| A | B | A & B | A | B | A ^ B | ~A |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 1 |
| 0 | 1 | 0 | 1 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 | 0 |
| 1 | 1 | 1 | 1 | 0 | 0 |
ビット単位計算機の使い方
- 12 つの整数 (A および B) を 10 進数、バイナリ (0b プレフィックス)、または 16 進数 (0x プレフィックス) で入力してください。
- 2ビット単位演算を選択してください: AND、OR、XOR、NOT、左シフト、または右シフト。
- 3バイナリ、16 進数、10 進数表現で結果を表示します。
Zenovayアナリティクス
関連ツール
よくある質問
ビット演算子とは何ですか?▾
ビット演算子はバイナリ(ビット)レベルで整数に対して作用します。AND(&):出力ビットは両方の入力ビットが1の場合のみ1です。OR(|):入力ビットのいずれかが1の場合、出力ビットは1です。XOR(^):正確に1つの入力ビットが1の場合、出力ビットは1です(排他的論理和)。NOT(~):すべてのビットをフリップします(1の補数)。JavaScriptではNOTは32ビット符号付き整数を使用しているため、~5 = -6です。左シフト(<<):N個の位置分すべてのビットを左シフトします。2^Nで乗算することと同じです。右シフト(>>):符号拡張で右シフト。符号なし右シフト(>>>):右シフトして0で埋めます。
ビットマスクとは何ですか、そしてそれはどのように使用されますか?▾
ビットマスクは、ビット演算子と共に使用して特定のビットを設定、クリア、またはテストする整数です。ビットを設定:value | (1 << n)はビットnを1に設定します。ビットをクリア:value & ~(1 << n)はビットnを0にクリアします。ビットをトグル:value ^ (1 << n)はビットnをフリップします。ビットをテスト:(value >> n)& 1はビットnが設定されている場合は1を返します。実際の用途:Unixファイルパーミッション(chmod 755 = 111 101 101バイナリ)、IPサブネットマスク、単一の整数にパックされた機能フラグ、RGBカラーチャネル、ゲーム状態ビットマップ、ネットワークプロトコルヘッダー。
XORはどのように機能し、何に使用されますか?▾
XOR(排他的論理和)はビットが異なるときに1を出力します。重要なプロパティ:A ^ A = 0、A ^ 0 = A、可換性と結合性。実際の用途:単純な暗号化(キーでXORして暗号化し、もう一度XORしてデコード — 同じ操作)。奇数を見つけ出す:XORすべての数字を使用して、他のすべてが2回表示される配列内の一意なものを見つけます。一時変数なしでスワップ:a ^= b; b ^= a; a ^= b。CRC(巡回冗長検査)エラー検出用のチェックサム。パリティビット計算。
JavaScriptがビット演算に32ビット整数を使用するのはなぜですか?▾
JavaScriptの数値は64ビットIEEE 754浮動小数点ですが、ビット演算子は操作前にオペランドを32ビット符号付き整数に変換します。これは、ビット演算の最大安全値は2^31 − 1 = 2,147,483,647であることを意味します。これを超える数値はオーバーフローするか、予期しない結果が生じます。NOT(~)は常に32ビット符号付き結果を返します — ~0 = -1、~1 = -2。符号なし右シフト(>>>)は符号なし32ビット整数を返します。64ビットビット演算の場合は、BigIntを使用します:100n & 255n。
一般的なビット操作のトリックは何ですか?▾
数値が偶数かどうかを確認:n & 1 === 0。2の累乗かどうかを確認:n > 0 && (n & (n-1))=== 0。最低設定ビットを取得:n & -n。最低設定ビットをクリア:n & (n-1)。セットビット数(popcount)をカウント:while(n){ count += n & 1; n >>= 1; }。バイト内のニブルをスワップ:((b & 0xF0)>> 4)|((b & 0x0F)<< 4)。2の累乗による高速フロア除算:n >> kはMath.floor(n / 2^k)と同じです。2の累乗で乗算:n << kはn * 2^kと同じです。