IT用語を超やさしく理解する
基数と基数変換
別名: 基数 / 基数変換 / 進数変換 / radix / base conversion
先に知っておくと分かりやすいことば(1語)
必要なら先に確認できます。知っていることばは、そのまま読み進めて大丈夫です。
- 2進数2進数の桁が1、2、4、8…の重みを持つことと、10進数との基本的な変換方法を初心者向けに説明します。
30秒で思い出す
基数は「1つの桁で何種類の数字を使うか」を表す数です。
10進数は0〜9の10種類、2進数は0と1の2種類を使います。基数が違っても、表している数そのものは同じにできます。
たとえば10進数の45は、次のように表せます。
10進数 45
2進数 101101
8進数 55
16進数 2D
超やさしく理解
普段使う10進数では、右から順に桁の重みが1、10、100…と10倍ずつ大きくなります。
2進数なら1、2、4、8…、16進数なら1、16、256…と増えます。
つまり、桁が1つ左へ進んだときに何倍になるかを決めているのが基数です。
正確にはどういうもの?
n進数は、基数nの位取り記数法です。
整数部分では、右端から順に各桁が次の重みを持ちます。
... n³ n² n¹ n⁰
各桁の値にその重みを掛けて足すと、10進数としての値を求められます。
たとえば16進数の 2D では、D は10進数の13を表します。
2 × 16¹ + 13 × 16⁰
= 32 + 13
= 45
16進数では0〜9に加えて、A〜Fを10〜15として使います。
よく使う進数
| 進数 | 使う数字 | 例 |
|---|---|---|
| 2進数 | 0, 1 | 101101 |
| 8進数 | 0〜7 | 55 |
| 10進数 | 0〜9 | 45 |
| 16進数 | 0〜9, A〜F | 2D |
同じ数字の並びでも、基数が違えば値は変わります。
たとえば 10 は、10進数では10ですが、2進数では2、8進数では8、16進数では16です。
ある進数から10進数へ変換する
各桁の「値 × 桁の重み」を足します。
2進数の 101101 なら、
1×32 + 0×16 + 1×8 + 1×4 + 0×2 + 1×1
= 45
となります。
10進数から別の進数へ変換する
整数では、変換したい基数で繰り返し割り、余りを下から読みます。
10進数45を16進数へ変換すると、
45 ÷ 16 = 2 余り13
2 ÷ 16 = 0 余り2
余りを下から読むので 2D です。16進数では13をDで表します。
2進数と8進数・16進数はまとめて変換できる
2進数は、8進数なら3bitずつ、16進数なら4bitずつ区切ると変換しやすくなります。
2進数 101101
101 101
8進数 5 5
2進数 0010 1101
16進数 2 D
桁をそろえるために左側へ0を補っても、整数の値は変わりません。
どこで使う?
基数変換は、コンピュータ内部のbit列を人が読みやすい形へ置き換えるときに役立ちます。
たとえば16進数は、長い2進数を4bitずつ短くまとめられるため、メモリアドレス、データのダンプ、設定値や識別子など、bitパターンを確認する場面でよく使われます。
大切なのは進数ごとの見た目を暗記することではなく、同じ値を別の基数で表していると理解することです。
よくある勘違い
進数が変わると数そのものが変わる?
変わるのは表し方です。同じ値を別の基数で書き表せます。
2進数で2を使ってよい?
使えません。n進数で1桁に使えるのは、0からn-1までです。
16進数のDは文字?
表記には文字Dを使いますが、値としては10進数の13を表します。
このKnowledgeで扱わないこと
ここでは主に整数の基数と基数変換を扱います。
負の数の補数表現、固定小数点、浮動小数点、演算誤差は別のKnowledgeへ分けて学びます。
ここまで分かればOK
- 基数が何を決める数か説明できる
- 2進数・8進数・10進数・16進数で使える数字を区別できる
- 小さな整数を別の基数から10進数へ変換できる
- 10進数の小さな整数を2進数・8進数・16進数へ変換できる
- 2進数を3bitまたは4bitずつまとめて8進数・16進数へ変換できる
資格との関係
基本情報技術者試験
- シラバス
- Ver.9.2
- 必要な理解
- 問題で応用できる
- 重要度
- 高
- 分野
- テクノロジ
関連するIT用語
理解できたか確認しよう
答えを選んで、なぜそうなるのかまで確認できます。
確認問題 1
8bit値を16進数へ変換する
8bitの値11101010を、ログへ短い16進数表記で記録することになりました。
11101010を16進数へ変換したものとして最も適切なものはどれですか?
確認問題 2
16進数から10進数への変換
16進数の2Dを10進数で表すといくつですか?