【真面目版】基数変換と桁の重み ー 数の「ものさし」を変えてみよう

目次

はじめに ― 私たちは「10進法の住人」

幽灯子/基本情報技術者副専門官

普段の生活で、私たちは何気なく「10」を区切りにして数を数えています。0, 1, 2, … 9 まで来たら、次は 桁が上がって「10」 になる。これがいわゆる 10進法(じっしんほう) です。

でも、この「10で区切る」というルールは、実は絶対的なものではありません。コンピュータの世界では「2で区切る」ルール(2進法)が使われていますし、時計は「60で区切る」仕組み(60進法)を使っています。

この記事では、こうした 「数の数え方のルール」を切り替える技術=基数変換 と、その理解に欠かせない 「桁の重み」 という考え方を、できるだけやさしく解説します。


1. 「基数」ってなに?

幽灯子/基本情報技術者副専門官

基数(きすう) とは、「いくつ集まったら桁が上がるか」を決める数のことです。

数え方基数使う数字身近な例
2進法20, 1コンピュータの内部処理
8進法80〜7Unixのファイル権限
10進法100〜9日常生活のほぼすべて
16進法160〜9, A〜Fカラーコード(#FF0000 など)

たとえば2進法では、使える数字は「0」と「1」だけ。1の次はもう桁が上がって「10」(十ではなく「いちぜろ」)になります。


2. 「桁の重み」を理解しよう

10進法での「桁の重み」

まずは馴染みのある10進法で考えてみましょう。

「253」 という数を分解すると、こうなります。

  百の位    十の位    一の位
    2    ×    10²  =  200
    5    ×    10¹  =   50
    3    ×    10⁰  =    3
                 合計 = 253

ここでの 10², 10¹, 10⁰ が、それぞれの桁が持つ 「重み」 です。右端の桁(一の位)は「10の0乗=1」の重みを持ち、左に行くほど重みが10倍ずつ大きくなります。

ポイント: 桁の重みとは、「その位置にある数字が、全体の値にどれだけ貢献するか」を表す倍率のことです。

2進法での「桁の重み」

2進法でもまったく同じ考え方が使えます。基数が「10」から「2」に変わるだけです。

2進法の 「1011」 を10進法に直してみましょう。

  位置:    左から1番目   2番目   3番目   4番目
  数字:       1          0       1       1
  重み:      2³=8      2²=4    2¹=2    2⁰=1

  計算:   1×8  +  0×4  +  1×2  +  1×1  =  11(10進法)

つまり、2進法の「1011」は、10進法の「11」と同じ値です。

16進法での「桁の重み」

16進法の 「2F」 を10進法に直してみましょう(Fは15を表します)。

  数字:     2          F(=15)
  重み:   16¹=16      16⁰=1

  計算:  2×16  +  15×1  =  47(10進法)

どの進法でも、「各桁の数字 × その桁の重み」を全部足す という仕組みは共通です。


3. 基数変換のやり方

パターン① ○○進法 → 10進法(重みを使って足し算)

上で紹介した方法がそのまま使えます。各桁に重みを掛けて合計するだけです。

例:8進法の「37」→ 10進法

3 × 8¹  +  7 × 8⁰
= 3 × 8  +  7 × 1
= 24 + 7
= 31

答え:31

パターン② 10進法 → ○○進法(割り算をくり返す)

10進法の数を別の進法に変換するには、変換先の基数で割り続けて、余りを下から読む のがコツです。

例:10進法の「25」→ 2進法

25 ÷ 2 = 12 … 余り 1  ↑
12 ÷ 2 =  6 … 余り 0  |
 6 ÷ 2 =  3 … 余り 0  | この方向に読む
 3 ÷ 2 =  1 … 余り 1  |
 1 ÷ 2 =  0 … 余り 1  |

余りを 下から上に 読むと(最後の余りから順に並べる) → 11001

検算してみましょう。

1×16 + 1×8 + 0×4 + 0×2 + 1×1 = 25     OK!

パターン③ 2進法 ↔ 8進法・16進法(グループ分け)

2進法と8進法・16進法の間には便利な近道があります。

  • 2進法 → 8進法: 右から3桁ずつ区切って、それぞれを8進法の1桁に変換
  • 2進法 → 16進法: 右から4桁ずつ区切って、それぞれを16進法の1桁に変換

例:2進法「11010110」→ 16進法

右から4桁ずつ区切る:  1101 | 0110
                        D       6

答え:D6


4. 日常生活の中の「基数変換」

幽灯子/基本情報技術者副専門官

実は、私たちは無意識に基数変換に似たことをしています。

  • 時間: 「130分は何時間何分?」→ 130 ÷ 60 = 2時間10分(60進法的な変換)
  • お金の両替: 1000円札を100円玉に崩す → 10枚(10を基数とした桁の移動)
  • Webデザイン: カラーコード #FF8800 は、RGBそれぞれを16進法2桁で表現したもの

5. まとめ

概念ひとことで言うと
基数「何個集まったら桁が上がるか」の数
桁の重みその位置にある数字の「影響力の大きさ」(基数のべき乗)
○○進法 → 10進法各桁 × 重み を全部足す
10進法 → ○○進法基数で割り続けて、余りを逆順に読む
2進 ↔ 8進・16進3桁 or 4桁ずつグループ分けで変換
幽灯子/基本情報技術者副専門官

基数変換は、最初はとっつきにくく感じるかもしれません。でも、根っこにある考え方は 「桁の重みを使った掛け算と足し算」 というシンプルなものです。一度この仕組みが腑に落ちれば、どんな進法でも怖くありません。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

ITTIのアバター ITTI 運営長

ITTI運営長
調べものと学ぶことが止められなくなり、現在は以下の4ブログを運営中:
・DXブログ(今ここ!)
・CODEブログ
・INFRAブログ
・XRブログ

保有資格:ITパスポート
目標資格:情報処理安全確保支援士(学ぶこと多すぎて道のりは遠いですが、毎日コツコツ進めています…泣)

ブログでは、実務経験と最新技術を掛け合わせて、読者の「わかりにくい」を「わかる!」に変える記事を発信中!
最終目標は、これらの知識を活かして「ドラえもんのような万能AI」を開発すること(AIを副運営長任命が待ち遠しい!)。
DX・CODE・INFRA・XRに興味ある方、気軽にX(@llEqmDGOYZ4258)でDMください。一緒に学びましょう!

公務員のキャラがDXを解説!?パロディのブログ『ITTI DX』、発信中!

ITTI DXは企業の安心と持続をサポートするDXを特化したブログ

コメント

コメントする

CAPTCHA


目次