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進数へ変換したものとして最も適切なものはどれですか?

回答を1つ選んでください

確認問題 2

16進数から10進数への変換

16進数の2Dを10進数で表すといくつですか?

回答を1つ選んでください