2進数・10進数・16進数を変換する方法
位取り記数法と手計算の手順を理解し、接頭辞、無効な文字、負数、大きな整数に注意して相互変換を確認します。
公開日: 2026-08-10 · 更新日: 2026-08-10
位取り記数法の基本
位取り記数法では、各桁の値を「桁の数字 × 基数の累乗」として足し合わせます。10進数の 345 が 3×10² + 4×10¹ + 5×10⁰ であるのと同様に、2進数や16進数も同じ考え方で読めます。
binary 101101 = 1×2⁵ + 0×2⁴ + 1×2³ + 1×2² + 0×2¹ + 1×2⁰ = 45
hex 2D = 2×16¹ + 13×16⁰ = 45
decimal 45 = binary 101101 = hex 2D
16進数では10から15を A から F で表します。大文字と小文字は通常同じ桁値ですが、文書内では表記を統一すると読み違いを減らせます。
手計算で相互変換する
2進数や16進数から10進数へは、上の例のように各桁へ基数の累乗を掛けて合計します。10進数から別の基数へは、基数で割った余りを記録し、商が0になるまで繰り返して、余りを下から上へ読みます。
45 ÷ 2 = 22 remainder 1
22 ÷ 2 = 11 remainder 0
11 ÷ 2 = 5 remainder 1
5 ÷ 2 = 2 remainder 1
2 ÷ 2 = 1 remainder 0
1 ÷ 2 = 0 remainder 1
result: 101101
2進数と16進数の間は4ビットずつ対応させる方法もあります。0010 1101 は 2 D なので 2D です。先頭側のグループが4桁未満なら、値を変えないゼロを左へ補います。
接頭辞と数値本体を区別する
JavaScriptなどでは、0b101101 が2進数リテラル、0x2D が16進数リテラルであることを示します。0b と 0x は桁の一部ではなく、基数を示す接頭辞です。
App Museumの進数変換ツールは各入力欄が基数を示すため、2進数欄には 101101、16進数欄には 2D と数値本体だけを入力します。0b101101 を2進数欄へ貼り付けると、b が無効な桁として扱われます。
無効な文字と値の意味に注意する
- 2進数で使える数字は
0と1だけです。102は無効です。 - 16進数で使えるのは
0〜9とA〜Fです。2Gは無効です。 00045と45は数値として同じですが、固定幅コードや識別子では先頭ゼロが意味を持つことがあります。変換後に必要な幅を別途復元してください。- 負数では符号と絶対値を分けて考えます。
-45は-101101、-2Dと表せますが、固定ビット幅の2の補数表現とは別物です。 - 非常に大きな整数は、処理系によって丸められることがあります。進数変換ツールは整数を
BigIntとして扱いますが、結果を渡す先の数値範囲も確認してください。
小数には、基数の負の累乗と丸めの問題が加わります。このガイドと進数変換ツールは整数の変換に集中します。
逆変換で結果を確認する
- 元の数値から目的の基数へ変換します。
- 得られた桁だけを使い、元の基数へ逆変換します。
- 先頭ゼロを除いた数値と符号が元の値に一致するか確認します。
- 境界値として
0、1、基数の直前と直後、負数、大きな整数も試します。 - コードへ埋め込む場合だけ、必要な
0bや0xを最後に付けます。
たとえば10進数 255 の期待結果は2進数 11111111、16進数 FF です。FF を10進数へ戻して 255 になること、さらに2進数へ戻して8個の 1 になることを確認します。