T

Text Machine

強力なテキストツールを、ブラウザで

基数変換ツール

2進数・8進数・10進数・16進数の間で数値を変換します。値を入力し、その値が表記されている基数を選ぶと、4つの基数をまとめて確認できます。任意精度で処理され、すべてブラウザ内で動作し、何もアップロードされません。

変換元

数値
結果

上に数値を入力すると、すべての基数で表示されます。

基数変換ツール の使い方

  1. 1

    数値を入力する

    フィールドに数値を入力するか貼り付けます。スペースとアンダースコアは無視されるため、1010_1101 のように桁を区切った値も使えます。

  2. 2

    元の基数を選ぶ

    入力した数値が2進数・8進数・10進数・16進数のどれで表記されているかを選びます。

  3. 3

    すべての基数を一度に確認する

    値が2進数・8進数・10進数・16進数でまとめて表示されるので、必要な基数を比較したりコピーしたりできます。

  4. 4

    結果をコピーする

    各基数の横にあるコピーボタンを押すと、その値をクリップボードに入れられます。

基数: 2 進数・8 進数・10 進数・16 進数

基数とは何か

基数(radix とも呼ばれます)とは、ある数体系がいくつの異なる数字記号を使うか、したがって各桁がどれだけの重みを持つかということです。10 進数は基数 10 で、0 から 9 までの 10 個の数字を使います。2 進数は数字が 2 個の基数 2、8 進数は数字が 8 個の基数 8、16 進数は数字が 16 個の基数 16 です。同じ量はどの基数でも書き表せます。変わるのは記号と桁の重みだけで、根底にある値は決して変わりません。

この変換ツールは、ある基数で書かれた数値を受け取り、それを 2 進数・8 進数・10 進数・16 進数で同時に表示するので、二度変換する必要はありません。基数を理解することは、機械のデータを流暢に読み解く鍵です。コンピューター、プログラマー、各種の標準は、それぞれもっともな実用上の理由から異なる基数を好むからです。

基数をまたぐ位取り記法

これらの体系はいずれも位取り式です。つまり、ある数字の値は、その桁に応じて基数のべき乗が掛けられます。10 進数では、右からの桁は 10 のべき乗です。1 の位、10 の位、100 の位です。任意の基数 b では、桁は b のべき乗になります。最も右が b の 0 乗(常に 1)、次が b、その次が b の 2 乗、というように続きます。ある数の値を求めるには、各数字をその桁のべき乗で掛け、結果を足し合わせます。

この 1 つの規則がすべての基数を統一します。2 進数の桁は 2 のべき乗(1、2、4、8)、8 進数の桁は 8 のべき乗(1、8、64、512)、16 進数の桁は 16 のべき乗(1、16、256、4096)です。任意の数を 10 進数に変換するのは、この重み付きの和を当てはめるだけです。10 進数を別の基数に変換するのはその逆で、その基数で割り算を繰り返します。

9 を超える数字記号

基数は、その大きさとちょうど同じ数だけの数字記号を必要とします。そこから、10 を超える基数について 1 つの疑問が生じます。9 より大きな値を表す 1 桁の数字をどう書くのか、ということです。16 進数はこれを文字を借りて解決します。0 から 9 の後は、10 に A、11 に B、12 に C、13 に D、14 に E、15 に F を使います。こうして 16 進数の 1 桁は 0 から 15 までの値をカバーし、大文字・小文字は問わないので、F と f は等しくなります。

10 以下の基数には文字は不要です。2 進数は 0 と 1 だけ、8 進数は 0 から 7、10 進数は 0 から 9 を使います。だからこそ、特定の基数では特定の数字が許されないのです。8 進数に 8 や 9 は現れず、2 進数で有効なのは 0 と 1 だけです。選んだ基数に対して大きすぎる数字を入力すると、その値はその基数では有効な数値ではなく、変換ツールがそう知らせます。

各基数がなぜ使われるのか

2 進数はコンピューターの母語です。ハードウェアのスイッチがオンとオフの 2 状態を持ち、それがそのまま 1 と 0 に対応するからです。機械が保存するものは、突き詰めればすべて 2 進数であり、そのため基数 2 は、長い 2 進数が人間には読むのが面倒であっても、データが最も低い層でどう表現されているかを理解するうえで欠かせません。

16 進数は、プログラマーにとっての 2 進数のコンパクトな速記です。16 進数の 1 桁はちょうど 4 ビットに等しいので、16 進数 2 桁で 1 バイト全体をきれいに表せます。だからこそ 16 進数は、メモリアドレス、カラーコード、バイトダンプを支配しています。8 進数はビットを 3 つずつまとめるもので、より古いコンピューターの名残です。それでも、755 が 8 進数である Unix のファイルパーミッションのような場所に今なお現れます。10 進数は人間が数える基数のままなので、値を人が読む必要があるときの自然な到達点です。

実例: 0xFF をすべての基数で

16 進数の値 FF を取り上げ、4 つの基数すべてにわたって変換してみましょう。桁ごとに読むと、左の F は 16 の位に、右の F は 1 の位にあるので、15 掛ける 16 足す 15 掛ける 1、すなわち 240 足す 15 で、10 進数では 240 + 15 = 255 になります。これは 1 バイトの最大値です。

同じ量は 2 進数では 11111111、すなわち 1 が 8 つです。255 は 256、つまり 2 の 8 乗より 1 少ないからです。8 進数では 377 です。255 は 3 掛ける 64 足す 7 掛ける 8 足す 7 だからです。こうして 1 つの値である 255 は、基数に応じて FF、11111111、377、255 として現れ、この変換ツールは 4 つすべてを一度に表示するので、直接比べられます。

基数をまたぐもう 1 つの例

10 進数の 100 を、ほかの 3 つの基数に変換してみましょう。2 進数については、それを足し合わせる 2 のべき乗を見つけます。64 足す 32 足す 4 が 100 なので、64、32、4 の桁が立ち、結果は 1100100 です。16 進数については 16 で割ります。100 は 6 掛ける 16(96)に余り 4 なので、64 になります。8 進数については 8 で割ります。100 は 1 掛ける 64 足す 4 掛ける 8 足す 4 なので、144 になります。

こうして 10 進数の 100 は、2 進数で 1100100、8 進数で 144、16 進数で 64 です。基数が高いほど表現が短くなることに注目してください。各桁がより大きな重みを担うからです。このコンパクトさこそが、2 進数では扱いにくいバイト値を書き出すのに 16 進数が好まれる理由です。

大きな数、負の数、入力の書式

この変換ツールは任意精度の大きな整数を使うので、一般的な 64 ビットの上限をはるかに超える値も、丸めなしで正確に変換します。これは、通常の数値型ではあふれてしまう長いハッシュ、識別子、暗号関連の値を扱うときに役立ちます。負の数も受け付けます。前にマイナス記号を付けると、その符号が結果のすべての基数に引き継がれます。

利便性のために、入力中のスペースとアンダースコアは無視されるので、1010_1101 や 255 255 のように桁を区切った値も 1 つの数値として読み取られます。これにより、読みやすさのために整形された値を、先に整理しなくてもそのまま貼り付けられます。ただし、選んだ基数に対してすべての桁が有効であることを確かめてください。2 進数に 2 はなく、8 進数に 8 や 9 はなく、16 進数では 0〜9 と A〜F のみです。さもないと、入力はその基数では無効として表示されます。

基数変換が役立つ場面

基数変換は、プログラミングやシステムの作業では日常的な仕事です。メモリアドレスやレジスタの値を 16 進数で読んで 10 進数の相当値が欲しいとき、2 進数のビットパターンをコンパクトな 16 進数に変換するとき、あるいは 644 のような Unix のパーミッションを 8 進数から読み解くときなどです。4 つの基数を一度に見られると、頭の中での切り替えや、手計算でのちょっとした取り違えのリスクがなくなります。

学習にも同じく価値があります。ある数を 2 進数・8 進数・10 進数・16 進数で並べて扱うと、位取り記法がすっと腑に落ち、なぜコンピューター、プログラマー、標準がそれぞれ特定の基数に頼るのかが明確になります。デバッグであれ、学習であれ、ただある値が別の体系でどう見えるか気になっただけであれ、基数の間で変換することは、コンピューティングで最も幅広く役立つ操作の 1 つです。

よくある質問

16進数を10進数に変換するにはどうすればよいですか?
元の基数として16進数を選び、ff のような16進数の値を入力します。10進数の結果である 255 が、2進数と8進数の表記とともに瞬時に表示されます。
どの基数に対応していますか?
2進数(基数2)・8進数(基数8)・10進数(基数10)・16進数(基数16)に対応しています。すべての値が4つの基数で一度に表示されるため、二度変換する必要はありません。
非常に大きな数値も扱えますか?
はい。このツールは任意精度の大きな整数を使用するため、一般的な64ビットの上限をはるかに超える値も丸めなしで正確に変換します。
負の数も入力できますか?
はい。値の前にマイナス記号を付けると、その符号が結果のすべての基数に引き継がれます。
サーバーに送信されるものはありますか?
いいえ。変換はすべてブラウザ内で実行されるため、数値が端末から外に出ることはなく、何も保存されません。

関連ツール

こちらの便利なツールもどうぞ

Unixタイムスタンプ変換

JSON ↔ CSV 変換

CSVをJSONに変換

JSON ↔ YAML 変換

テキスト ↔ バイナリ変換

テキスト ↔ 16進数変換