calc / bitwise
ビット演算計算機
AND・OR・XOR・NOT・左右シフトなどのビット演算をブラウザ上で計算します。 2進数・8進数・10進数・16進数で入力でき、結果はすべての基数で表示されます。入力データはサーバーに送信されません。
値Aを入力して「計算する」ボタンを押すと結果が表示されます
使い方
01- 「入力基数」で値の表記(2進数/8進数/10進数/16進数)を選択します
- 「演算子」ボタンで実行したいビット演算(AND/OR/XOR/NOT/LSHIFT/RSHIFT)を選びます
- 値Aを入力します(例:10進数モードなら
255) - NOT・RSHIFT 以外の演算では値Bも入力します
- 「計算する」ボタンを押すと、BIN・OCT・DEC・HEX の4形式で結果が表示されます
実装コード
02コアロジックはJavaScript組み込みのビット演算子と >>> 0 による符号なし32bit整数変換のみで実装しています。外部ライブラリ不要で、そのままコピーしてご利用いただけます。
export type BitwiseOp = 'AND' | 'OR' | 'XOR' | 'NOT' | 'LSHIFT' | 'RSHIFT'
export function bitwiseCalc(op: BitwiseOp, a: number, b: number): number {
switch (op) {
case 'AND': return (a & b) >>> 0
case 'OR': return (a | b) >>> 0
case 'XOR': return (a ^ b) >>> 0
case 'NOT': return (~a) >>> 0
case 'LSHIFT': return (a << b) >>> 0
case 'RSHIFT': return (a >>> b)
}
}
export function toBinaryStr(n: number, bits: 8 | 16 | 32 = 32): string {
const unsigned = n >>> 0
return unsigned.toString(2).padStart(bits, '0')
}
export function toHexStr(n: number): string {
return (n >>> 0).toString(16).toUpperCase().padStart(8, '0')
}
export function parseIntInput(s: string, base: 2 | 8 | 10 | 16): number | null {
const trimmed = s.trim()
if (!trimmed) return null
const n = parseInt(trimmed, base)
if (isNaN(n)) return null
return n >>> 0
}よくある使用例・注意点
03フラグ管理・パーミッションのデバッグ
複数のフラグをビットフィールドで管理するコードのデバッグに使えます。例えばLinuxのファイルパーミッション(755 = 0b111_101_101)を8進数モードで入力し、ANDマスクを使って特定ビットを確認できます。
ネットワークのサブネット計算
IPアドレスとサブネットマスクのAND演算でネットワークアドレスを求める用途に使えます。例:192.168.1.100(10進数)AND 255.255.255.0(10進数)= ネットワークアドレス。各オクテットを個別に計算してご利用ください。
>>> 0 による符号なし32bit整数の扱い
JavaScriptのビット演算は内部で符号付き32bit整数として処理されますが、このツールでは
>>> 0(ゼロ埋め右シフト)を使って常に符号なし32bit整数(0〜4294967295)として扱います。そのため NOT 演算の結果も正の値になります。LSHIFT の桁あふれ
左シフト(LSHIFT)は32bit整数の範囲内で動作します。32以上シフトすると結果が 0 になる場合があります。例:1 << 31 = 2147483648(符号なし32bit最大の半分)、1 << 32 = 0。
16進数入力のポイント
16進数モードでは 'A'〜'F' を大文字・小文字どちらでも入力できます。'0x' プレフィックスは不要です。例:FF → 255、DEADBEEF → 3735928559。
関連ツール
04ソースコード
05このツールのソースコード(テストコードを含む)はGitHubで公開しています。 MITライセンスで自由に利用・改変できます。
GitHub でコードを見る →