基数(n進数)変換

2 進数・8 進数・10 進数・16 進数の値を一度に相互変換。

使い方

一般的な「基数」とは、同じ整数を異なる数の桁で表す方法のことです。10 進数(基数 10)は 0〜9 を使います。2 進数(基数 2)は 0 と 1 のみで、左に移るごとに桁の重みが 2 倍になります:2 進数 1011 = 1×8 + 0×4 + 1×2 + 1×1 = 10 進数の 11。16 進数(基数 16)は 0〜9 のあと A〜F で 10〜15 を表し、各桁は次の桁の 16 倍:0xFF = 15×16 + 15 = 255。8 進数(基数 8)は中間的な存在で、かつて PDP 系ミニコンで標準だったものの、今は Unix のファイルパーミッション(chmod 755)でよく見かける程度です。

4 つの基数がある理由は、それぞれ異なる実用上の役割があるためです。2 進数は CPU が直接実行する形式。16 進数は 2 進数を読みやすく書いたもので、1 桁が正確に 4 ビット(ニブル)に対応します — 0xDEADBEEF は 11011110101011011011111011101111 より遥かに読みやすい。8 進数は 3 ビットずつまとめる方式で、9 ビットバイトが普通だった時代に便利でした。10 進数は人間の計数。本ツールは 1 つを入力すると残り 3 つを同時に出力するので、頭の中で計算せずに全形式を確認できます。

2³¹ − 1(2,147,483,647)を超える値は受け付けません — 符号付き 32 ビット整数の挙動が破綻し、多くの言語でビット演算が予期せぬ結果を返し始めるためです。

計算式

基数 b の桁 dₙ dₙ₋₁ … d₁ d₀ について:値 = Σ dᵢ × bⁱ 2 進数:ビットが左へ進むごとに 2 倍。8 進数:0〜7、桁の重みは 8。16 進数:0〜9 のあと A=10 … F=15、桁の重みは 16。

本ウィジェットは JavaScript 組み込みの parseInt(str, base) と Number.prototype.toString(base) に任せており、標準ライブラリに重い処理を委ねています。バリデーションでは解析前に各基数で許容される文字集合を強制するため、2 進入力に 2 進以外の文字が混ざった場合は静かに NaN にならず、明確にエラーとして弾かれます。

計算例

  • 「10 進数」ボタンを選択した状態で 255 と入力。
  • 結果行に 2 進数 11111111・8 進数 377・10 進数 255・16 進数 FF と表示されます。
  • 「16 進数」をクリックして DEADBEEF と入力 → 10 進数 3,735,928,559(2³¹ 上限のすぐ手前)。

よくある質問

上限が 2³¹ − 1 で、2⁶³ ではないのはなぜですか?

JavaScript の数値は 64 ビット浮動小数点で表現され、通常の四則演算なら 2⁵³ − 1 までの整数を安全に扱えます。ただしビット演算(& | ^ << >> ~)に触れた瞬間、ランタイムはオペランドを符号付き 32 ビット整数に変換するため、2³¹ − 1 を超える値は静かに符号が反転したりラップしたりします。本ツールでは 2³¹ − 1 で頭打ちにし、本番コードで同じ値をビット演算に渡したときと表示が一致するようにしています。

0x や 0b のような接頭辞はどうなりますか?

本ツールは受け付けません — 数字部分だけを入力し、基数ボタンで文脈を指定してください。これは意図的な仕様で、接頭辞はプログラミング言語側の慣習(C、Python、JavaScript)であって数値そのものの性質ではなく、4 つの基数で接頭辞を中途半端に受け入れるとバリデーションが煩雑になるためです。0xFF をペーストする場合は 0x を取り除いてから「16 進数」を選択してください。

16 進数は大文字小文字を区別しないのに、表示が大文字なのはなぜですか?

16 進数は小文字(ff, deadbeef)でも大文字(FF, DEADBEEF)でも同じ整数として解析され、どちらも有効です。表示は大文字に正規化しています — 金融、ハードウェア、ほとんどの仕様書(Intel マニュアル、RFC、RGB カラー)で主流の表記だからです。Web 開発の一部(CSS、Node のデバッグ出力など)では小文字が好まれますが、これは正しさではなくスタイルの問題です。入力欄にはどちらの形式を貼り付けても動作します。

関連計算機