calc / bitwise

ビット演算計算機

AND・OR・XOR・NOT・左右シフトなどのビット演算をブラウザ上で計算します。 2進数・8進数・10進数・16進数で入力でき、結果はすべての基数で表示されます。入力データはサーバーに送信されません。

値Aを入力して「計算する」ボタンを押すと結果が表示されます

使い方

01
  1. 「入力基数」で値の表記(2進数/8進数/10進数/16進数)を選択します
  2. 「演算子」ボタンで実行したいビット演算(AND/OR/XOR/NOT/LSHIFT/RSHIFT)を選びます
  3. 値Aを入力します(例:10進数モードなら 255
  4. NOT・RSHIFT 以外の演算では値Bも入力します
  5. 「計算する」ボタンを押すと、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
進数変換Byte単位変換ハッシュ生成

ソースコード

05

このツールのソースコード(テストコードを含む)はGitHubで公開しています。 MITライセンスで自由に利用・改変できます。

GitHub でコードを見る →