【基数変換】各進数の基数と重み〜基数変換の計算方法と変換方法を解説!

【基数変換】各進数の基数と重み〜基数変換の計算方法まで徹底解説!
ハテオ君

各進数の基礎知識や進数から別の進数への変換方法が全然わからないからわかりやすくしれないかなぁ?[

今回はこの悩みを解決していきます。

本日の記事テーマ

各進数の基数と重み〜基数変換の計算方法と変換方法を徹底解説!

IT業界では必ずコンピューターの知識が必要になります。このコンピューター内部では、2進数が使われているため、2進数の知識が特に求められます。

また、2進数は人間では理解できないため、8進数、10進数、16進数といった数値へ変換し考えます。

そのため、各進数と変換方法を今回の内容で身につけていきましょう!

本日の記事内容

  • 各進数の基礎知識
  • 基数と重み(n進数)
  • 基数変換の計算方法

記事の最後には、今回の内容に関しての確認問題も用意していますので、インプットとアウトプットとしても是非活用してみてください。

元中卒の私が誰でも理解できるように解説していきます。

それでは早速見ていきましょう!

黄島 成

各進数の基礎知識

各進数の基礎知識

良く使われる進数は、以下の4種類です。

  • 2進数
  • 8進数
  • 10進数
  • 16進数

IT業界では、上記4種類の進数を理解しておけば特に問題はないです。

それぞれの進数の特徴からまず見ていきましょう。

2進数とは?

2進数とは、「012つの数字のみで表現される進数です。

コンピュータの内部では、この2進数が使われている!

0の次は「1となり、1の次は桁が上がり「01となります。

2進数とは?

例:2進数で10進数の「4」を表現する場合

  • 0の場合=「0
  • 1の場合=「1
  • 2の場合=「10
  • 3の場合=「11
  • 4の場合=「100

つまり4を2進数で表す場合は「100」となる。

8進数とは?

8進数とは、「0〜7」の8個の数字を使う進数です

7が最後の数字となるので、7の次に桁が上がり「1017の次は「2077の次は「100と桁が上がっていきます。

8進数とは?

例:8進数で10進数の「10」を表す場合

  • 7の場合=「7
  • 8の場合=「10
  • 9の場合=「11
  • 10の場合=「12

つまり10を8進数で表す場合は「12」となる。

10進数とは?

10進数とは、「0〜9」の10個の数字を使う進数です。

9が最後の数字となり9の次は「1019の次は「2099の次は「100と桁が上がっていきます。

10進数とは?

この10進数は私たちが普段から使っている数字ですね。

16進数とは?

16進数とは、「0〜9」の10個の数字と「A〜F」6個のアルファベットを使う進数です。

9とFが最後の数字になり9の次は「AFの次が「10と桁が上がっていきます。

2進数を考えるときに16進数使って変換することが多いですね。

16進数図

例:16進数で10進数の「26」を表す場合

  • 9の場合=「9
  • 10の場合=「A
  • 15の場合=「F
  • 16の場合=「10
  • 25の場合=「19
  • 26の場合=「1A

つまり26を16進数で表す場合「1A」となる。

各進数の一覧

2,8,10,16進数一覧

8進数と16進数の役割

2進数は、桁数が多いため言葉で伝えてもわかりにくいです。

「データの値は2進数で「0100101010100」だよ!」なんて言われても分かりづらく、覚えられませんよね。

そこで登場するのが、8進数と16進数!

2進数は桁が多くわかりにくいですが、8進数と16進数は桁数が少なく人間でも理解しやすいです。

2進数=コンピュータで扱われる数値。(桁数が多い)

8・16進数=コンピュータでも扱われ人間でも理解しやすい数値。(桁数が少ない)

2進数を16,8進数へ変換

このように、コンピュータが理解できる2進数を人間でも理解できる数字で表現するために、8進数と16進数が使われる。

また、2進数から16進数へ変換や、8進数を16進数へ変換することを「基数変換」と呼びます。

基数と重み(n進数)

基数と重み(n進数)

基数とは?

基数とは、基本単位となる数字のことを指します。

一言で言えば、「桁上がりの基準

例えば10進数の場合0~9までの数字が使われますよね。

9の次は「10」99の次は「100」999の次は「1000」と桁が上がっていきます。

つまり10進数では、1~9までの数字を使い、10が桁上がりの基準となるので、10進数の基数は「10」となるわけです

基数は、桁上がりの基準だと覚えておきましょう!

各進数の基数一覧

進数基数使用する単位
2進数20と1
8進数80〜7
10進数100〜9
16進数160〜9とA〜F

重みとは?

重みとは、数値の桁ごとに割り当てられるモノ。

2進数から10進数へ変換する場合に、よく使われます。

例:10進数の「1000」という値の場合

10進数の「1000」の場合は、1000=1×103 で表すことが可能です。

この時の1が「仮数」10が「基数」103が「重み」となります。

つまり重みは、どの桁かを表す値です。

このようにnを基準として数値を表す基数法を進数の「n進数と言います。

n進数で少数点が入る場合は、左から順に「n¹n²n³…といった重みになる。

前提としては以下内容を覚えておきましょう!

  • n01(nの0乗は必ず1となる)
  • n-x1/nx

各進数の重み一覧

進数重み
2進数2
8進数8
10進数10
16進数16

基数変換の計算方法

基数変換の計算方法

進数を別の進数に変換すること、基数変換と言います。

基数変換することで、桁の多くなる数値の桁数を減らし分かりやすくすることが可能です。

それでは、詳しく以下基数変換の計算方法を解説していきます。

  • 10進数を2進数へ変換する場合
  • 2進数を10進数へ変換する場合
  • 2進数を16進数へ変換する場合
  • 16進数を2進数に変換する場合
  • 小数点が入る場合の変換方法

10進数を2進数へ変換する場合

まず、10進数を2進数へ変換する場合を解説していきます。

10進数「3」という値を最初に2進数へ基数変換してみましょう。

10進数2進数
00
11
210
311

このように10進数の「3」は2進数へ基数変換すると「11となる値が低ければ簡単ですね、しかし値が大きな場合はどうでしょう。

次は10進数の「229」という値を2進数へ変換してみましょう。

値が大きくなると、最初に変換した方法で数えていくと大変ですよね。

なので、その場合は以下の計算方法で変換します。

0進数から2進数へ変換する計算方法

この様に、商が「0なるまで繰り返す。そして、その都度出た余りを並べることで変換することが可能です。

つまりこの答えは、「11100101」となる。

基数変換前の数値を変換後の重みで0になるまで割っていき、余りを並べると変換後の数値になります。

2進数を10進数へ変換する場合

今後は逆に、2進数を10進数へ変換する場合を解説していきます。

先ほど出した2進数「11100101」を10進数に基数変換してみましょう。

10進数へ変換する場合は、桁の重みを集計する方法を使います。

2進数における各桁の重み(1桁目は「1」、2桁目は「2」、3桁目は「4」・・・)という形で、2進数の数値の桁ごとに重みを割り当てます。

そして、2進数の「1」となっている桁の重みをすべて足すことで、10進数の値を出すことが可能。

2進数から10進数へ変換する計算方法

つまり答えは「229」となる。

2進数の各桁の重みは「1、2、4、8、16、32、64なので、これを覚えておけば計算は簡単です。

2進数を16進数へ変換する場合

今度は、2進数を16進数に変換する場合を解説していきます。

2進数「11100101」を16進数に基数変換してみましょう。

16進数へ変換する場合は、2進数「111001014桁ずつに区切り、各桁の数字に桁の重みを掛けて集計します。

ただし、集計結果が10〜15になった場合は、それをA〜Fに置き換える必要がある。

2進数を16進数へ変換する計算方法

つまり2進数の「11100101」は、16進数の「E5」となる。

ここでのポイントは4桁づつ区切ることと、10~15はA~Fに置き換えることです。

16進数を2進数へ変換する場合

今度は、逆に16進数を2進数に変換する場合を解説していきます。

16進数の「A4」という数値を2進数に変換してみましょう。

まず最初に、16進数を1桁に区切って10進数に変換します。

  • Aは10進数の「10
  • 4は10進数の「4

次に、2つの10進数を4桁の2進数へ変換します。(4桁ない場合は0で補う)

2進数の各桁の重みの中で、各数値を足して「10」になる箇所に1を当てはめる。4も同様に「4」になる箇所に1を当てはめる。

1が当てはまっている箇所が2進数の「1となり、0の箇所が2進数の「0となる。

10進数を4桁の2進数へ変換すると以下通り

  • 10=1010
  • 4=0100(4桁ないため先頭に0を追加し補う)
16進数を2進数へ変換する計算方法

つまり16進数のA4を2進数へ変換すると「10100100」となる。

2進数を16進数へ変換する方法と逆のことをすれば簡単に変換出来ます。

小数点が入る場合の変換方法

最後に、小数点が入る場合の変換方法を解説していきます。

10進数の「5.625」を2進数で表す場合を考えていきましょう。

まず、整数の部分を通常通り「÷2をしていった余りで出し、その余りを下から順に並べます。

小数点が入る基数変換(整数の部分)

これで、整数の部分は「101」となる。

最後に、小数点以下部分を切り出して「×2をし、小数点以下が0になるまで繰り返し計算をする。そして、計算結果の整数部分を上から順に数えます。

数点が入る場合の基数変換(小数点の部分)

上記内容で計算した場合以下通りになります。

  • 整数5の部分は「101」
  • 小数点以下0.625の部分は「101」

ここにつまり10進数の5.625を2進数に変換すると「101101」となる。

今回のまとめ&確認問題

基数変換まとめ

進数の基礎知識と基数変換の計算方法については上記内容で以上となります。

それではまず今回の内容をまとめていきましょう。

まとめ

  • コンピューターの内部で使われるのが2進数。人が扱う進数は主に8、10、16進数。
  • 基数は桁上がりの基準。重みはどの桁かを表す数値。
  • 10進数を2進数へ変換する計算方法は、商が0になるまで基数で割る。
  • 2進数を10進数へ変換する計算方法は、1の付いてる重みを全て足す。
  • 2進数を16進数へ変換する計算方法は、4桁ごとに区切り1の付いてる重みを全て足す。
  • 16進数を2進数へ変換する計算方法は、10進数に変換し10進数を2進数へ変換。
  • 小数点が入る場合は、整数部分は割る。小数点部分は掛ける。

今回の確認問題に挑戦してみましょう!

確認問題

情報処理の確認問題①

「次へ」で問題スタート!

①解説

【問題①】

2進数の1.1011と1.1101を加算した結果を10進数で表したものはどれか。

:3.1
不正解×
:3.375
不正解×
 :3.5
正解○
:3.8
不正解×

【解説】

まずは1.1011と1.1101を足し算します。

11 111←桁上がり 
1.1011
+ 1.1101
=11.1000

次に11.1000を10進数へ変換します。

11. 1 0 0 0
220. 2-12-22-32-4←2進数の重み

最後に1になっている箇所の重みを全て足します

(1×21)+(1×20)+(1×2-1)=3.5

つまり答えは「3.5」となる。

②解説

【問題②】

10進数の分数1/32を16進数の小数で表したものはどれか。

:0.01
不正解×
:0.02
不正解×
:0.05
不正解×
:0.08
正解○

【解説】

16進小数の各桁は、小数点の右に進むにつれて、

0.1(16)→1/16(10),
0.01(16)→1/256(10),
0.001(16)→1/4096(10),
0.00…00(16)→1/16n(10)

というように、16-nを表しています。
1/32の分母を16進小数の小数点第2位の1/256と通分すると8/256になるので、小数点第2位を8にした0.08が正解となります。

つまり答えは「」となる。

③解説

【問題③】

0000~4999 のアドレスをもつハッシュ表があり、レコードのキー値からアドレスに変換するアルゴリズムとして基数変換法を用いる。キー値が55550のときのアドレスはどれか。ここで基数変換法とは、キー値を11進数とみなし、10進数に変換した後、下4桁に対して0.5を乗じた結果(小数点以下は切捨て)をレコードのアドレスとする。

:0260
正解○
:2525
不正解×
:2775
不正解×
:4405
不正解×

【解説】

まずキー値の55550を10進数に変換します

(5×114)+(5×113)+(5×112)+(5×111
→73205+6655+605+55=80520

10進数に変換すると80520となる。この下4桁に0.5を乗じた結果が答えとなるため、

0520×0.5
=0260

つまり答えは「0260」となる。

最後まで読んでいただきありがとうございました!

今回の内容が、役に立ったな!と思ったらシェア&ブクマ登録よろしくお願いします。

また、質問や問い合わせに関しては、コメント欄かお問い合わせフォームを活用ください。

それではまたお会いしましょう。

黄島 成

-情報処理
-