変換元の進数を選び、その進数の書き方で数値を入力してください。2進数・8進数・10進数・16進数の4つの表現をまとめて計算し、途中式も表示します。
このページでできること
- 変換元の進数(2進数・8進数・10進数・16進数)を選んで数値を入れるだけで、4つの進数での表現がまとめてわかります
- 「16進数の 2AA は10進数でいくつ?」「170 を2進数にすると?」のような変換が一発でできます
- 位取りの展開(各桁×桁の重みを全部足す)と、基数で割って余りを並べる途中式も表示するので、変換のやり方そのものが身につきます
- 基本情報技術者試験や高校「情報Ⅰ」に出る進数変換(基数変換)の学習・答え合わせに使えます
- 式のやさしい解説・Excel/Googleスプレッドシート/Python用のコピペ数式・計算ドリル(演習問題)もこのページにまとまっています
この計算は何の役に立つ?
進数変換(基数変換)は、ITの国家試験である基本情報技術者試験・ITパスポート試験や、高校の必修科目「情報Ⅰ」でくり返し出題されてきた定番テーマです。
「2進数 1010 は10進数でいくつか」「10進数 45 を2進数で表せ」のような問題は、このページの「位取りの展開」と「割って余りを並べる」の2つの手順そのものです。途中式を確認しながら練習すれば、試験本番で手が止まらなくなります。
Webページの色は「#FF5733」のような16進数のカラーコードで指定します。これは赤・緑・青の強さを2桁ずつの16進数(00〜FF = 10進数の0〜255)で並べたもので、#FF5733 なら赤 FF(255)・緑 57(87)・青 33(51)です。
16進数と10進数を行き来できると、「もう少し赤を弱く」のような色の調整をコードの数値で直接イメージできるようになります。
サーバー管理でよく使う「chmod 755」の 755 は8進数です。8進数の1桁は2進数の3桁分に対応し、755 を2進数に直すと 111 101 101 ——「読む・書く・実行する」の許可のオン・オフが3ビットずつ並んだものになっています。
進数のしくみがわかると、この数字が暗号ではなく「ビットのスイッチ表」だと読めるようになります。
ネットワークの住所であるIPアドレス(例:192.168.1.1)は、実体は8ビットずつ4つに区切った2進数で、192 は 11000000、255 は 11111111 です。
「サブネットマスク 255.255.255.0 が『上位24ビットがネットワーク部』を意味する」といったネットワークの基本は、10進数と2進数の変換ができて初めて腑に落ちます。ネットワーク技術者の実務や資格試験(CCNA等)の土台になる知識です。
「1バイト=8ビットで0〜255(16進数で00〜FF)を表せる」「メモリのアドレスやエラーコードが 0x7FFF のような16進数で表示される」など、コンピュータの内部を学ぶときは2進数と16進数が共通言語です。
プログラミング学習でつまずきやすいビット演算・文字コード・色指定なども、進数変換が自由にできるようになると一気に見通しがよくなります。
式
用語・記号の解説
記号
| \(b\) | ビー | 基数。「何進数か」を表す数で、このページでは 2・8・10・16 のどれかです。(英語の base の頭文字) |
| \(d_i\) | ディー・アイ ディーのアイばんめ | 右端から数えて \(i\) 番目(右端が0番目)の桁の数字。16進数ではA〜F(10進数の10〜15)も含みます。(英語の digit の頭文字) |
| \(i\) | アイ | 桁の位置。右端の桁が \(i=0\) で、左に1桁進むごとに1ずつ増えます。 |
| \(N\) | エヌ | 10進数での値。このページの変換の途中経過はいつもこの10進数を経由します。 |
| \(\sum\) | シグマ | 「全部足す」ことを表す記号。\(\sum_{i=0}^{k}\) は「\(i\) を0から \(k\) まで動かして全部足す」という意味です。 |
| \(q\) | キュー | 割り算の商。10進数を \(n\) 進数に直すときは、商が0になるまで割り算をくり返します。(英語の quotient の頭文字) |
| \(r\) | アール | 割り算の余り。この余りが \(n\) 進数の桁(下の桁から順)になります。(英語の remainder の頭文字) |
| \(2\mathrm{AA}_{(16)}\) | に・エー・エー(16進数) | 数の右下に小さく添えた \((16)\) は「この数は16進数で書いてある」という意味です。同じように \(1010_{(2)}\) なら2進数を表します。何進数かまぎらわしいときに使う書き方です。 |
用語
| 進数 (基数) |
しんすう(きすう) | 数を数えるときに「いくつでひとまとまり(桁上がり)にするか」の決まり。普段の数は10でひとまとまりの10進数、コンピュータの内部は2でひとまとまりの2進数です。まとまりの数(2・8・10・16など)を基数と呼びます。 |
| 位取り記数法 | くらいどりきすうほう | 桁の位置ごとに重みを決めて数を書き表す方法。10進数の 682 が \(6 \times 100 + 8 \times 10 + 2 \times 1\) を意味するのと同じしくみで、2進数・8進数・16進数は重みがそれぞれ2・8・16のべき乗になります。 |
| 2進数 | にしんすう | 0と1の2種類の数字だけで数を表す書き方。コンピュータは電気のオン・オフで情報を扱うため、内部の計算はすべて2進数で行われています。 |
| 8進数 | はちしんすう | 0〜7の8種類の数字で数を表す書き方。2進数3桁分が8進数1桁に対応します。Linuxのファイル権限(パーミッション)の「755」などで使われます。 |
| 16進数 | じゅうろくしんすう | 0〜9とA〜F(Aが10、Bが11、…、Fが15)の16種類の文字で数を表す書き方。2進数4桁分が1桁に対応するので、長い2進数を短く書くためにプログラミングで広く使われます。 |
| ビット | ビット | 2進数の1桁のこと。コンピュータが扱う情報の最小単位で、0か1のどちらかの値を持ちます。 |
| ニブル | ニブル | ビットを4個まとめたもの(=16進数1桁分)。2個で1バイトになります。 |
| バイト | バイト | ビットを8個まとめたもの(=16進数2桁分)。「1バイト = FF までの256通り」のように、バイトと16進数は相性がよい単位です。 |
前提として理解しておくといいこと
このページの計算を「意味がわかって」使えるようになるために、前提として理解しておくといいことをまとめました。
| 十進法の位取り(小学校) |
|
| 割り算と余り(小学3〜4年) |
|
| 累乗・指数(中学1年) |
|
| n進法(高校 数学A・情報Ⅰ) |
|
Excelで計算する方法
| 10進数の値 | 170 |
| 2進数 | =DEC2BIN(B1) |
| 8進数 | =DEC2OCT(B1) |
| 16進数 | =DEC2HEX(B1) |
| 2進数 | 10101010 |
| 10進数 | =BIN2DEC(B1) |
| 16進数 | 2AA |
| 10進数 | =HEX2DEC(B1) |
| 10進数の値 | 1500 |
| 16進数(BASE) | =BASE(B1,16) |
| 16進数から10進数に戻す(DECIMAL) | =DECIMAL(B2,16) |
注意:これらの関数には桁数の制限があります。DEC2BINは −512〜511(結果が2進数10桁以内)まで、DEC2OCTは −536,870,912〜536,870,911 まで、DEC2HEXは −549,755,813,888〜549,755,813,887 までしか変換できません。逆方向のBIN2DEC・OCT2DEC・HEX2DECも入力は10桁までで、10桁を超えるとエラーになり、ちょうど10桁で最上位のビットが1(16進数なら先頭の桁が8〜F)のときは負の数(2の補数解釈)として扱われます。
制限を超える大きな数は、4つ目の表のBASE関数(10進数→n進数)とDECIMAL関数(n進数→10進数)を使ってください(Excel 2013以降。約9千兆 = 2の53乗−1 まで扱えます)。
Googleスプレッドシートで計算する方法
| 10進数の値 | 170 |
| 2進数 | =DEC2BIN(B1) |
| 8進数 | =DEC2OCT(B1) |
| 16進数 | =DEC2HEX(B1) |
| 2進数 | 10101010 |
| 10進数 | =BIN2DEC(B1) |
| 16進数 | 2AA |
| 10進数 | =HEX2DEC(B1) |
| 10進数の値 | 1500 |
| 16進数(BASE) | =BASE(B1,16) |
| 16進数から10進数に戻す(DECIMAL) | =DECIMAL(B2,16) |
DEC2BINが −512〜511 までなどの桁数制限もExcelと共通です。制限を超える大きな数はBASE関数・DECIMAL関数を使ってください。
Pythonで計算する方法
number = "2AA" # 変換したい数値(変換元の進数の書き方で)
from_base = 16 # 変換元の進数(2, 8, 10, 16)
value = int(number, from_base) # まず10進数(整数)に直す
binary = format(value, "b") # 2進数
octal = format(value, "o") # 8進数
hexadecimal = format(value, "X") # 16進数(大文字)
print(f"10進数: {value}")
print(f"2進数: {binary}")
print(f"8進数: {octal}")
print(f"16進数: {hexadecimal}")
数式記述言語(LaTeX等)での書き方(コピペ可)
N = Σ dᵢ × bⁱ
N = \sum_{i=0}^{k} d_i \times b^{i}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>N</mi>
<mo>=</mo>
<munderover>
<mo>∑</mo>
<mrow><mi>i</mi><mo>=</mo><mn>0</mn></mrow>
<mi>k</mi>
</munderover>
<msub><mi>d</mi><mi>i</mi></msub>
<mo>×</mo>
<msup><mi>b</mi><mi>i</mi></msup>
</mrow>
</math>
N = sum_(i=0)^k d_i * b^i
FromDigits[{2, 10, 10}, 16]
N := add(d[i]*b^i, i = 0 .. k);
N = polyval(d, b);
N = ∑_(i=0)^k d_i × b^i
N = b × q + r (0 ≤ r < b)
N = b \times q + r \quad (0 \le r < b)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>N</mi>
<mo>=</mo>
<mi>b</mi>
<mo>×</mo>
<mi>q</mi>
<mo>+</mo>
<mi>r</mi>
</mrow>
</math>
N = b q + r, \ 0 <= r < b
QuotientRemainder[682, 16]
q := iquo(n, b); r := irem(n, b);
q = floor(n/b); r = mod(n, b);
N = b × q + r (0 ≤ r < b)
h = b₃×2³ + b₂×2² + b₁×2¹ + b₀×2⁰
h = b_3 \times 2^3 + b_2 \times 2^2 + b_1 \times 2^1 + b_0 \times 2^0
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>h</mi>
<mo>=</mo>
<msub><mi>b</mi><mn>3</mn></msub><mo>×</mo><msup><mn>2</mn><mn>3</mn></msup>
<mo>+</mo>
<msub><mi>b</mi><mn>2</mn></msub><mo>×</mo><msup><mn>2</mn><mn>2</mn></msup>
<mo>+</mo>
<msub><mi>b</mi><mn>1</mn></msub><mo>×</mo><msup><mn>2</mn><mn>1</mn></msup>
<mo>+</mo>
<msub><mi>b</mi><mn>0</mn></msub><mo>×</mo><msup><mn>2</mn><mn>0</mn></msup>
</mrow>
</math>
h = b_3*2^3 + b_2*2^2 + b_1*2 + b_0
FromDigits[{b3, b2, b1, b0}, 2]
h := 8*b3 + 4*b2 + 2*b1 + b0;
h = 8*b3 + 4*b2 + 2*b1 + b0;
h = b_3 × 2^3 + b_2 × 2^2 + b_1 × 2^1 + b_0 × 2^0
ChatGPT に聞いて計算してもらう方法
あなたは進数変換の計算アシスタントです。次の計算を、必ずPythonコードを実際に実行して行い、実行結果の数値だけを根拠に回答してください(暗算や推測で答えないでください)。 16進数の 2AA を、次の3つの進数に変換してください。 1. 10進数 2. 2進数 3. 8進数 あわせて、16進数から10進数への変換については、各桁×桁の重み(16のべき乗)の展開式も示してください。 計算に使ったコードと、実行結果の数値を示してください。
計算ドリル(演習問題)
このページの変換を、自分の手で計算できるようになるための演習問題です(基本情報技術者試験レベル)。
答えと解説は解答ページにあります。
使い方
-
1数値を入力計算したい数値を入力欄に入力します
-
2計算「計算する」ボタンを押します
-
3結果を確認計算結果がその場に表示されます。計算の考え方や式の解説も同じページで確認できます
DataChefの特徴
専門知識不要、直感的で簡単な操作
個人情報を登録することなく使用できます
「ダウンロード」押下でファイルを自動削除
クレジット表記不要
商用利用許諾の連絡も不要です
