基数変換計算機
整数を2進数、8進数、10進数、16進数に変換します。
この進数変換計算機の使い方
- 整数を入力
「整数」フィールドに非負の整数(例:255や4096)を入力してください。
- 2進数の値を確認する
2進数の結果は、基数2の表現を示します。
- 8進数と16進数を確認
コンパクトな表現として、8進数と16進数の結果を確認してください。
- 10進数を確認
10進数の出力は、照合のために元の値を確認するものです。
この基数変換計算機の仕組み
この基数変換計算機は、10進数(基数10)の整数を、コンピュータで最も頻繁に使用される4つの記数法である2進数(基数2)、8進数(基数8)、16進数(基数16)で表します。すべての位取り記数法は同じ仕組みで動作します。各桁の位置は基数の累乗を表し、数値は各桁にその位置の重みを掛けた値の合計となります。基数間の変換は、低レベルプログラミング、デジタル論理設計、ネットワークエンジニアリング(MACアドレスやIPv6アドレス)、CSSのカラーコード、Unixのファイル権限マスク、デバッグ時のメモリアドレス確認などにおいて不可欠な操作です。
反復除法:Nを変換先の基数Rで割り、余りを記録します。商が0になるまで繰り返し、最後に余りを逆順に並べます。 10進数の255を2進数、8進数、16進数に変換します。2進数 (R = 2) の場合:255 ÷ 2 = 127 余り 1、127 ÷ 2 = 63 余り 1、63 ÷ 2 = 31 余り 1、31 ÷ 2 = 15 余り 1、15 ÷ 2 = 7 余り 1、7 ÷ 2 = 3 余り 1、3 ÷ 2 = 1 余り 1、1 ÷ 2 = 0 余り 1。余りを下から上に読むと 11111111 となります。8進数 (R = 8) の場合:255 ÷ 8 = 31 余り 7、31 ÷ 8 = 3 余り 7、3 ÷ 8 = 0 余り 3 → 377。16進数 (R = 16) の場合:255 ÷ 16 = 15 余り 15 (F)、15 ÷ 16 = 0 余り 15 (F) → FF。
10進数 4096 → 2進数 1000000000000、8進数 10000、16進数 1000。4 KiB = 4096バイトであることを理解するのに役立ちます。
10進数 15 → 2進数 1111、8進数 17、16進数 F。各16進数の桁は正確に4ビットに対応します(F = 1111)。
- ✓ 入力は非負の整数(0または正の整数)です。小数や負の数には、このツールの範囲外である拡張アルゴリズム(符号付き2進数のための2の補数など)が必要です。
- ✓ 9を超える16進数は、ほとんどのプログラミング言語、RFC、ハードウェアドキュメントの慣習に従い、大文字の A–F を使用して表されます。
- ✓ 出力から先頭のゼロは省略されます。固定幅表現(8ビットや32ビットの2進数など)の場合は、手動で必要な幅までパディングを行ってください。
- ✓ この計算機は非負の整数のみを受け付けます。表示される桁の正確性を保つため、2^53 − 1 (JavaScriptの Number.MAX_SAFE_INTEGER) を超える値は拒否されます。
- 各16進数は正確に4つの2進数(ビット)に対応し、各8進数は正確に3つのビットに対応します。この関係により、16個のニブルパターンを覚えれば、16進数、8進数、2進数間の暗算による変換が迅速に行えます。
- 覚えておくと便利な一般的な値:0xFF = 255、0x100 = 256、0xFFFF = 65535、0xFFFFFFFF = 4,294,967,295(符号なし32ビット整数の最大値)。
- Unixのファイル権限には8進数が使用されます。755はrwxr-xr-x(所有者は読み取り/書き込み/実行、グループとその他は読み取り/実行)を意味します。各8進数は3つのパーミッションビットをエンコードします。
- CSSの16進数カラーコードは、赤、緑、青のチャンネルを表す3つの16進数バイト値を連結したものです。例えば、#FF8800は赤255、緑136、青0を意味します。
- 位取り記数法の理論 — Knuth, D. E., The Art of Computer Programming, Volume 2: Seminumerical Algorithms, Section 4.1
- IEEE 754-2019 — 浮動小数点演算規格(整数表現の文脈)
- RFC 4291 — IP Version 6 アドレス体系(IPv6の16進数表記)
コンピューティングにおける記数法の理解
すべての位取り記数法は基数(radix)を使用し、各桁にその位置に基づいた重みを割り当てます。10進数(基数10)では、一番右の桁が1の位、次が10の位、その次が100の位となります。2進数(基数2)は0と1のみを使用し、トランジスタのオン/オフ状態に直接対応します。8進数(基数8)は1桁あたり3ビットを、16進数(基数16)は1桁あたり4ビットをグループ化し、10〜15の値にはA–Fを使用します。基数間の変換には反復除法を用います。数値を変換先の基数で割り、余りを記録し、商がゼロになるまで繰り返した後、余りを逆順に読み取ります。このアルゴリズムは、プログラミングにおけるすべての基数変換の基礎となっています。
開発者における基数変換の実用的なユースケース
開発者は、メモリダンプの検査、ビット演算のデバッグ、ファイル権限の解釈、カラーコードの操作などで基数変換を使用します。Unixのファイル権限(例:755)は8進数であり、各桁が所有者、グループ、その他の読み取り/書き込み/実行をエンコードしています。#FF8800のようなCSSの16進数カラーは、16進数で連結された3バイトです。IPv6アドレスは16進数で記述されます。ビットマスクやフラグは、可読性のために16進数で表現されることがよくあります(バイトマスクには0xFF、16ビットには0xFFFFなど)。低レベルのコードやネットワークプロトコルをデバッグする際、10進数、16進数、2進数の間で変換を行うことで、基礎となるビットパターンを素早く把握できます。
基数変換計算機に関するよくある質問
コンピューティングで2進数、8進数、16進数が使われるのはなぜですか?
2進数はトランジスタのオン/オフ状態に直接対応しており、ハードウェアのネイティブ言語です。8進数と16進数は2進数の簡潔な略記法です。1つの16進数は正確に4ビット、1つの8進数は3ビットを表します。そのため、プログラマーは長い2進数の文字列よりも簡潔にアドレス、ビットマスク、カラーコードを表現するためにこれらを使用します。
逆方向(例:16進数から10進数)に変換するにはどうすればよいですか?
各桁に基数の位の累乗を掛け、その結果を合計します。例えば、16進数の1A3は、10進数では 1×16² + 10×16¹ + 3×16⁰ = 256 + 160 + 3 = 419 となります。
非常に大きな数値の場合はどうなりますか?
この計算機は、JavaScriptの安全な整数制限である 2^53 − 1 (9,007,199,254,740,991) までの値のみを受け付けます。それ以上の数値は、ブラウザ内で最下位桁が失われる可能性があるため、拒否されます。
負の数や小数を変換できますか?
このツールは非負の整数を対象としています。コンピュータにおける負の整数は通常、固定ビット幅の2の補数で表現され、小数値はIEEE 754浮動小数点エンコーディングを使用します。これらはいずれも、この計算機では収集しない追加のパラメータを必要とします。
なぜコードには0xプレフィックスが表示されるのに、出力には表示されないのですか?
0xプレフィックス(および2進数の0b、8進数の0o)は、コンパイラやインタプリタにどの進数を期待するかを伝える言語固有のリテラル構文です。この計算機は、あらゆる文脈で使用できるように、プレフィックスなしの生の数字文字列を出力します。