基数変換の対照表
同じ値を4つの基数で書き表した表です。16進数1桁が2進数4桁に、8進数1桁が3桁に対応している点に注目してください。
| 10進数 | 2進数 | 8進数 | 16進数 |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 5 | 101 | 5 | 5 |
| 8 | 1000 | 10 | 8 |
| 10 | 1010 | 12 | A |
| 15 | 1111 | 17 | F |
| 16 | 10000 | 20 | 10 |
| 100 | 1100100 | 144 | 64 |
| 255 | 11111111 | 377 | FF |
- この計算機は、IEEE 754 倍精度演算の安全な整数の上限(2⁵³ − 1 = 9,007,199,254,740,991)までの非負整数を扱います。これを超える入力は、黙って丸めるのではなく拒否されます。
- 小数や負の数(2の補数表現)は、この変換ツールの対象外です。
2進数体系とは
2進数は基数2の位取り記数法で、0 と 1 の2つの数字だけであらゆる数を表し、各桁は2のべき乗を表します。2進数 1010 を右から読むと、各桁は 0×1 + 1×2 + 0×4 + 1×8 = 10(10進数)を意味します。デジタル電子回路が情報を2進数で保持・処理するのは、2つの状態(オン/オフ)を取る回路素子が1つの2進数字、すなわち1ビットにそのまま対応するからです。
16進数(基数16)と8進数(基数8)は、2進数を簡潔に書くための相棒です。16 = 2⁴ なので16進数1桁はちょうど2進数4桁を表し、8 = 2³ なので8進数1桁はちょうど3桁を表します。16進数は 0–9 の数字に加え、10 から 15 の値を表す A–F の文字を使います。10進数の 255 は2進数で 11111111、16進数で FF、8進数で 377 です。
位取り記数法はすべて同じ規則に従います。基数 b で dₙ…d₁d₀ と書かれた数は、各桁の値に b をその桁位置だけべき乗したものを掛け、合計した値になります。したがって基数変換は純粋に記法上の操作です。元の基数で各桁を評価して値を求め、次にその値を目的の基数で繰り返し割って書き出せばよいのです。
この2進数計算機の使い方
- 変換したい数値を入力します(最大64桁。0b、0x、0o などの接頭辞は入力できますが無視されます)。
- その数値が書かれている基数 — 2進数、10進数、16進数、8進数 — を選びます。
- 10進数の値と、それに相当する2進数・16進数・8進数の表記を読み取ります。
- 選んだ基数で有効な数字だけが受け付けられます。たとえば8進数の入力では数字の 8 は無効です。
基数変換の数学
10進数に変換するには、各桁の値に基数をその桁位置(右端を 0 として数える)だけべき乗したものを掛け、合計します。10進数から変換するには、目的の基数で繰り返し割り、余りを逆順に読みます。
計算例: 2進数の 1010 は 1×2³ + 0×2² + 1×2¹ + 0×2⁰ = 8 + 2 = 10(10進数)です。この 10 を他の基数で書くと、10 ÷ 16 = 0 余り 10 → 16進数では A、10 ÷ 8 = 1 余り 2 → 8進数では 12 となります。
よくある間違い
- 他の基数の 10 を「じゅう」と読んでしまう — 位取り記数法では 10 は常にその基数自身を意味します(10₂ = 2、10₈ = 8、10₁₆ = 16)。
- 選んだ基数に存在しない数字を使う。たとえば8進数での 8 や 9、16進数での F より後の文字など。
- ビットのまとまりを取り違える。16進数1桁は4ビット、8進数1桁は3ビットなので、2進数の桁の区切り方を誤ると変換結果も誤ります。
- 先頭のゼロは何も変えないことを忘れる。0010₂ も 10₂ も10進数では 2 です。
よくある質問
2進数を手計算で10進数に変換するには?
右端の桁を 0 として数え、各2進数字にその桁位置の2のべき乗を掛けて足し合わせます。1101 なら 1×8 + 1×4 + 0×2 + 1×1 = 13 です。右から左へ読むと、桁の重みは 1, 2, 4, 8, 16, 32 と続きます。
10進数を2進数に変換するには?
その数を 2 で繰り返し割り、余りを記録します。余りを逆順に読んだものが2進数の答えです。13 なら 13÷2 = 6 余り 1、6÷2 = 3 余り 0、3÷2 = 1 余り 1、1÷2 = 0 余り 1 となり、下から上へ読むと 1101 です。
コンピュータはなぜ2進数を使うのか?
デジタル回路は2つの電圧状態を確実に区別でき、それぞれの状態が1つの2進数字(ビット)に対応します。2状態を前提にハードウェアを設計すると記憶も論理も単純になり、ノイズにも強くなります。そのため主流のプロセッサやメモリは、プログラマがその上でどんな記法を使おうと、物理層ではすべてデータを2進数で表現しています。
16進数は何に使われるのか?
16進数は2進数を簡潔に書く方法です。16進数1桁がちょうど4ビットを表すため、1バイトは常に16進数2桁(00–FF)になります。2進数よりはるかに短く、しかも1桁ずつ2進数に対応するので、メモリアドレス、カラーコード(例: #FF6600)、MACアドレス、生データのダンプなどの標準的な表記になっています。
この計算機が受け付ける最大の数はいくつ?
入力は64桁までで、値は 2⁵³ − 1 = 9,007,199,254,740,991 以下に制限されます。これは IEEE 754 倍精度浮動小数点が正確に表せる最大の整数です。この上限を超えると通常の JavaScript の数値は整数としての精度を失うため、計算機は丸めた結果を返すのではなく入力を拒否します。
参考文献
- Knuth DE. The Art of Computer Programming, Volume 2: Seminumerical Algorithms, 3rd edition, Addison-Wesley, 1997 — positional number systems and radix conversion.
- IEEE Std 754-2019. IEEE Standard for Floating-Point Arithmetic — double-precision format and exact-integer range.