進数変換ツールの使い方
- 「2 進数」「8 進数」「10 進数」「16 進数」「任意の進数」のいずれかの欄に整数を入力します。0x・0b の接頭辞、マイナス記号、区切りのスペースもそのまま使えます。
- ほかの進数に変換したいときは、「任意の進数」のメニューから基数を選びます。
- 「桁区切りを表示」「英字を大文字で表示」で表示を切り替え、必要な結果の「コピー」を押します。
- 「2 の補数表現」で 8・16・32・64 ビットを選ぶと、そのビット幅での並びと、符号付き・符号なしとして読んだ値が表示されます。
進数変換のしくみ
n 進数では、各桁に「n の何乗か」という重みがあります。2 進数の 1101 は 1×8+1×4+0×2+1×1=13 で、10 進数の 13 です。逆に 10 進数から変換するときは、基数で割り続けて余りを下から並べます。13 を 2 で割っていくと余りは 1、0、1、1 なので、13 は 2 進数で 1101 です。
16 進数は 0〜9 と、10〜15 を表す A〜F を使います。16 は 2 の 4 乗なので、16 進数の 1 桁は 2 進数のちょうど 4 桁に対応し、0xFF は 1111 1111、10 進数の 255 です。8 進数は 1 桁が 2 進数 3 桁に対応し、255 は 377 になります。基本情報技術者試験でも頻出のテーマです。
2 進数・16 進数・8 進数が使われる場面
16 進数は Web の色指定(#FF5733 は赤 255・緑 87・青 51)、メモリアドレス、MAC アドレス、Unicode の文字コード(「あ」は U+3042)、ハッシュ値などで使われます。2 進数はビットフラグや、サブネットマスク(255.255.255.0 は 1 が 24 個、0 が 8 個)、ハードウェアのレジスタで登場します。
8 進数は主に Unix のファイルパーミッションで使われ、chmod 755 は所有者が rwx、グループとその他が r-x という意味です(7 は 111、5 は 101)。数字と英字をすべて使う 36 進数は短い ID や短縮 URL に便利で、1295 は 36 進数で ZZ になります。
2 の補数と符号付き整数
コンピュータは負の整数を「2 の補数」で表します。正の数の各ビットを反転して 1 を足す方法で、8 ビットなら 42 は 0010 1010、-42 は 1101 0110(0xD6)です。同じビット列を符号なし整数として読むと 214 になるため、符号付きと符号なしの型を混ぜるとバグの原因になります。
n ビットの符号付き整数で表せるのは -2^(n-1) から 2^(n-1)-1 までで、8 ビットなら -128〜127、32 ビットなら -2,147,483,648〜2,147,483,647 です。範囲を超えた数は下位ビットだけを表示します。固定長の整数がオーバーフローしたときと同じ結果です。
大きな数も正確に変換
JavaScript の通常の数値は 2^53-1(9,007,199,254,740,991)を超えると精度が落ちるため、変換ツールによっては長い 16 進数や 64 ビットの ID が丸められてしまいます。このツールは BigInt で計算しているので、128 ビットのハッシュ値や 20 桁の ID でも正確に変換できます。
よくある質問
2 進数を 10 進数に変換するには?
右の桁から 1、2、4、8、16……の重みを掛けて合計します。101101 なら 32+8+4+1=45 です。上の「2 進数」欄に入力すれば、「10 進数」欄にすぐ表示されます。
10 進数を 16 進数に変換するには?
16 で割り続け、余りを逆順に並べます(10〜15 は A〜F)。1000 ÷ 16=62 余り 8、62 ÷ 16=3 余り 14(E)、3 ÷ 16=0 余り 3 なので、1000 は 16 進数で 3E8 です。
小数(0.5 など)も変換できますか?
このツールは整数専用です。負の数や桁数の多い数には対応していますが、小数は変換できません。10 進数の 0.1 が 2 進数では無限に続くように、小数はほかの進数で正確に表せないことが多いためです。
-1 を 2 の補数で表すとどうなりますか?
すべてのビットが 1 になります。8 ビットなら 0xFF、16 ビットなら 0xFFFF、32 ビットなら 0xFFFFFFFF です。符号なしとして読むと、それぞれ 255、65,535、4,294,967,295 です。
「n 進数」の n はいくつまで選べますか?
2〜36 進数です。0〜9 と A〜Z の 36 文字を数字として使うため、36 進数が上限になります。
最終更新: ソースコードを見る