進数変換(2進・8進・10進・16進)とビット演算

2進・8進・10進・16進を相互に即時変換するツールです。BigIntで64bit超の値にも対応し、負数は8/16/32/64bit幅を選んで2の補数表示にできます。AND/OR/XOR/NOT/シフトのビット演算電卓と立っているビット位置の一覧も表示します。

どの欄に入力しても他の欄が即座に更新されます。先頭に「-」(負号)、または「0x」「0b」「0o」を付けるとその表記が優先されます(全角数字・全角マイナスにも対応)。

16進(2桁区切り)
2進(4桁区切り)
8進
10進(符号なし・幅内)
有効ビット数(符号を除く絶対値)
立っているビット位置(0=最下位)

ビット演算電卓

A・Bはビット幅(上のビット幅設定と共通)でマスクしてから演算します。「0x」「0b」「0o」接頭辞を付けなければ10進数として解釈します。

結果(16進)
結果(2進・4桁区切り)
結果(10進・符号なし)
結果(10進・符号あり)

使い方

  1. 「10進数」「16進数」「8進数」「2進数」のいずれかの欄に値を入力すると、残りの欄が即座に更新されます。
  2. 負数を扱う場合は「ビット幅」で表示に使う幅(8/16/32/64bit)を選びます。
  3. 「2進・8進・16進の入力欄の解釈」で、最上位ビットが1の値を負数(2の補数)として読むか、そのまま非負の数値として読むかを切り替えられます。
  4. 下部の「ビット演算電卓」でAND/OR/XOR/NOT/シフトを計算できます。

仕組み・計算式

2の補数は多くの処理系が採用する負数表現で、Nビット幅において非負整数vのビットパターンは「(2^N + v) mod 2^N」で求められます。本ツールは値をJavaScriptのBigIntとして保持し、64bitを超える整数でも精度を落とさず計算します。BigIntのビット演算子(&, |, ^, ~, <<, >>)はECMAScript仕様で「無限精度の2の補数」として定義されているため、選択したビット幅のマスク(2^N - 1)とAND演算するだけで正しいNビットのビットパターンを直接得られます。算術右シフトはBigIntの>>演算子が符号を保持したまま実装しているため、そのまま利用しています。

現場の落とし穴: 「2の補数として解釈」がONの状態で16進欄に0x80〜0xFF(8bit時)のような値を入れると自動的に負数として解釈されます。unsigned charやネットワークバイト列など符号なし前提のデータを貼り付けると意図せず負の数になるため、その場合は「符号なし」に切り替えてください。また選択したビット幅を超える負数(例: 8bit選択時の-200)は2の補数表示ができないため、符号+絶対値表示にフォールバックします。

よくある質問

Q. マイナスの数を16進・2進・8進の欄に直接入力できますか?

A. できます。先頭に「-」を付けると、2の補数ではなく符号+絶対値としてそのまま負数と解釈されます。2の補数のビットパターンを見たい場合は、符号なしの値(例: FF)を「2の補数として解釈」ONの状態で入力してください。

Q. 64bitを超える値は正しく扱えますか?

A. 扱えます。内部でJavaScriptのBigIntを使うため、任意の桁数の整数を精度を落とさず変換できます。ただしビット幅の選択肢は8/16/32/64bitまでのため、それを超える幅での2の補数表示はできません。

Q. 0x・0b・0oの接頭辞はどの欄に入力しても認識されますか?

A. はい。10進欄でも「0xFF」のように入力すれば16進として自動判定します。接頭辞がある場合は符号なしの数値としてそのまま解釈され、2の補数への変換は行われません。

関連ツール

最終更新・根拠の確認日: 2026-09-10 · カテゴリ: 開発・データ