情報処理【基数変換】の動画をYouTubeに公開しました

YouTubeに「基数変換【情報処理の計算①:情報処理をマスター】」を公開いたしました。

動画内の文字起こし

これから、基数変換について説明をおこなっていきます。ここでは、つぎの内容を順番に説明していきます。詳細は概要欄をご確認ください。
基数変換とは、ある基数で表記された数値を、別の基数による表記に変換することです。では、そもそも基数とは何か、ということです。基数とは、記数法で基礎となる数のことです。記数法と言うのは、数を文字や記号などで表す方法のことです。例えば、私たちは普段の生活で10進数という記数法を使って計算をしています。記数法には他にも、2進数や16進数などの記数法があり、私たちの身近なところで使われています。10進数と言うのは0から9までの10個の数字を使って表す方法で、これは普段私たちが生活や授業の中で使っているのでわかりやすいです。一方、2進数は0と1の2個の数字を使って表す方法です。そして16進数は、16個の英数字を使って表す方法ですが、0から9の10個の数字だけでは足りませんので、これにAからFの英字6個を加えて、16個の英数字を使って表す形になります。
私たちは2進数、10進数、16進数などの記数法を使って数を数えていきますが、どの記数法でもすべての英数字を使うと、桁上がりするという特徴を持っています。例えば、2進数の場合は0と1この2つしかありませんので、これを使ったら桁があがりイチゼロとなります。10進数の場合は0から順番に数えていって9までですべての数字を使ったら、桁上りしてその次が10となります。16進数の場合は16個の英数字を使うことになりますので、0から9までの数字、その後AからFの6つの英字を使って表現し、すべて使い終わったら桁上りし、イチゼロになります。
ここで1つ注意点ですが、私たちが普段使っている10進数の場合は1と0が合わさった数字を10と呼びますが、2進数や16進数などの場合は10ではなく、イチゼロとそのまま数字を呼びます。例えば、2進数の場合はゼロ、イチ、イチゼロ、イチイチ、イチゼロゼロ、と数字を呼んでいきます。これは16進数においても同様で、10進数以外の場合は数字や英字をそのまま読む形になります。
以上から、基数がどういったものかがわかったと思います。そこで改めて基数変換ですが、簡単に言うと2進数、10進数、16進数などの数値を他の記数法に変換すること、例えば、2進数のものを10進数に変えたり、10進数のものを16進数に変えたりすることです。
それでは、10進数を2進数に基数変換する方法について説明をしていきます。10進数25を2進数に変換しなさい、という例題を一緒に解いてみましょう。ここでポイントです。2進数に変換したい場合は、10進数の値を2で割っていくことになります。具体的に問題を解きながら説明をしていきます。今回は10進数の25です。これを2進数に変換するためには、先ほどポイントで説明したように2で割っていきます。それでは、25を2で割ったら、答えと余りをその下に記入をしていきます。25を2で割ると、答えは12、余りが1になります。次に12を再度2で割り、答えと余りを記入します。この2で割るという処理を答えが割り切れなくなるまで続けていくことになります。12を2で割ると、答えは6、余りゼロです。次に6を2で割ると、答えは3、余りがゼロです。次に3を2で割ると、答えは1、余りが1になります。答えが1になり、2で割れなくなりましたのでここでストップです。そうしたら、この最後の答え1からスタートして、矢印に沿って数字をつなげていきます。すると11001となります。これが10進数25を2進数に変換した答えになります。このようにして2進数に変換する場合は10進数の値を2で割り続けていく、そして割れなくなったところで下から順番に数字をつなげていく、これによって2進数に変換した答えを導き出すことができます。今回は2進数に変換したいので2で割る形になりますが、もし16進数の場合は16で割ることになります。何進数に変換したいかによって割る数字が変わってきますので、注意してください。
それでは練習問題です。10進数31を2進数に変換しなさい、という問題です。先程と同じように10進数の値を2進数に変換しますので、この31を2で割っていきます。すると、答え15、余り1、 15を2で割ると、答え7、余り1、7を2で割ると、答え3、余り1、3を2で割ると、答え1、余り1となります。答えが1になり割れなくなりましたので、2で割るのをストップします。そうしたら、最後の答え1から順番に矢印の方向に向かって数字をつなげていく形になりますので、10進数31を2進数に変換した値は、11111になります。
次に、2進数を10進数に基数変換する方法について説明をします。2進数11001を10進数に変換しなさい、という例題を一緒に解いてみましょう。ここでのポイントは、2のn乗を各桁にかけて足していく、と言うものです。先程の問題を覚えている人であればわかると思いますが、2進数の11001というのは10進数の25のことです。答えが既にわかっていますので、このイチイチゼロゼロイチがどうやったら25になるのかについて説明をしていきます。では、この11001の各桁に2のn乗をかけていきます。nの値は0からスタートして、左に進むたびにプラス1をしていきます。するとこの11001の1番右側の1に2の0乗、隣の0に2の1乗、その隣は2の2乗、2の3乗、2の4乗をかけていきます。2の0乗は1、2の1乗は2、2の2乗は4、2の3乗は8、2の4乗は16ですから、これらの数字を上と下でかけていきます。すると1番右側から1 × 1で1、2 × 0で0、4 × 0で0、8 × 1で8、16 × 1で16、となります。掛けて得られたこの値をそれぞれ足していきますので、1 +0 +0 +8 +16で、答えは25となります。ここで補足として、数字の表記の仕方について説明をしていきます。基本的に基数変換などで用いる数字は、数字を括弧で囲み右下に数字を書いていくことが多いです。例えば、2進数の11001の場合は、数字全体をカッコで囲んで、右下に小さく2と書きます。これによって、11001が2進数の値だと言うことがわかります。これがもし、カッコと小さい右下の2がなければ、11,001と間違って10進数の値と勘違いされてしまう場合があります。それを避けるために括弧で囲んで、右下に何進数なのかを書くことによって、その数字の正しい記数法を理解することができます。10進数の16であれば、16にカッコして、右下に10と、16進数の48であれば、48にカッコして、右下に16と書きます。以上から、今回の値、10進数の25については、このように表記します。
それでは練習問題です。2進数110011を10進数に変換しなさい、と言う問題です。110011、これにまずは2のn乗をかけていきます。今回は6桁の2進数になりますので、2の0乗からスタートして、最後1番左側は2の5乗をかけることになります。すると右側から1、2、4、8、16、32とかけていくことになります。それで、この2のn乗をかけていくと言う流れは覚えてほしいのですが、実際に問題を解くときに途中計算として、毎回2のn乗を書いて、さらにそれを計算して1、2、4、8、と書いていくのでは無駄が多いので、計算方法が理解できたのであれば初めから1、2、4、8、と数字を書いていって計算していってもokです。それでは上と下をかけて、右側から1、2、0、0、16、32、となりますので、これらを全て足して、答えは51となります。
次に、10進数を16進数に基数変換する方法について説明していきます。10進数29を16進数に変換しなさい、という例題を一緒に解いてみましょう。ここでのポイントは、16進数に変換したい場合は10進数の値を16で割る、と言うことです。10進数を2進数に基数変換するときは2で割っていましたが、今回は16進数に基数変換しますので2ではなくて16で割ることになります。そうすると、この29を16で割り、答えと余りを記入していきます。すると、答えは1、あまり13、となります。これについても、答えが割れなくなるまで続けていくことになります。ただし、今回は答えが1となっていて割ることができなくなりましたので、ここで計算はストップになります。そうすると問題は、余りに13と言う数字だと言うことです。16進数ですので16個の英数字を使って表現することになりますので、左の表を見てもらうと、10進数での13は、16進数ではDに相当します。ですから、13はDに変え、あとは矢印に沿って読んでいく形になりますので、答えは1 Dとなります。
それでは練習問題です。10進数181を16進数に変換しなさい、と言う問題です。まずは、この181を16で割っていきます。すると、答えは11、余り5、となります。そうすると、答えが11となっていますが9よりも大きい値になりますので、左の表にあるように11はBになりますので、B5、これが答えになります。
次に16進数を10進数に基数変換する方法について説明をしていきます。16進数、5 Bを10進数に変換しなさい、という例題を一緒に解いてみましょう。ここでのポイントは、各桁に16のn乗をかけて足していく、と言うものです。2進数を10進数に基数変換する場合は、2のn乗をかけていましたが、今回は16進数から10進数に基数変換しますので、2のn乗ではなくて16のn乗をかけていくことになります。それでは16のn乗を各桁にかけていきますが、やり方は2のn乗のときと同じです。nは0からスタートし、左に行くとnの値はプラス1されていきます。ですからBには16の0乗、5には16の1乗をかけていきます。16の0乗は1、 16の1乗は16になります。また、左の表から、Bは10進数の11になります。あとは上下をかけていきますと、右側から、11 × 11で11、隣は16 × 5で80、となります。この2つの数字を足すことによって、答えは91と求められます。
それでは練習問題です。16進数、ECを10進数に変換しなさい、と言う問題です。これらにまず16のn乗をかけて行きます。右側のCには、16の0乗、Eには16の1乗をかけていきます。16の0乗は1、 16の1乗は16です。さらにCは10進数の12、Eは10進数の14になりますので、右側は1 × 12で12、その隣は16 × 14で224、となります。この2つの値を足すことによって、答えは236となります。
次に、2進数から16進数に基数変換する方法について説明をしていきます。2進数111101を16進数に変換しなさい、という例題を一緒に解いてみましょう。ここでのポイントは、2進数を4桁ごとに分割して、2進数、10進数、16進数の順に計算していく、ということです。では具体的にやっていきましょう。まず最初に、2進数の値を右から4桁ごとに分割していきます。今回は6桁の2進数を使っていますが、右から4桁分、1101、これをまずは分割します。左側の2桁、11が残っていますが、これを4桁にしていくので、足りない部分は先頭にゼロを追加して4桁にします。ですから、11ではなくて、0011と4桁に直します。このようにして4桁ごとに分割が終えたら、2進数を10進数にするための計算を行っていきます。2進数を10進数に変えるためには、2のn乗をかけていく形になりますが、今回は少し表記を簡略して、1、2、4、8、とだけ記載しておきます。これらの数字を上下でかけ、足し算をすると、1101の部分は13、0011の部分は3となります。この10進数の値をさらに16進数に変換していくと、3は3のまま、13に関しては、右の表を参考にすると、16進数のDに相当します。13をDに置き換えた上で、3とDを結合させると、答えは3Dとなります。ここで少し補足ですが、2進数を4桁ごとに分割するのは、2進数4桁と16進数1桁は同じ大きさになるからです。これは何故かと言うと、2進数4桁、16進数1桁のどちらも、0から15まで数えることができる、つまり同じ大きさだからです。今回、2進数を4桁ごとに分割していますが、ネットワークなどの問題のときもこの考えを使いますので、覚えておきましょう。
それでは練習問題です。2進数、1011010を16進数に変換しなさい、と言う問題です。まずは、この7桁の2進数を4桁ごとに分割していきます。右から4桁、1010をまず分割します。左側の3桁、101が残りますが、これを4桁にしますので先頭に0を1つつけて、0101とします。これに1、2、4、8、をかけ、足し算することで1010は10、0101は5、となります。10は16進数のAに相当しますので、この2つの英数字を結合させて、答えは5 Aとなります。
次に、16進数を2進数に基数変換する方法について説明していきます。16進数E5を2進数に変換しなさい、という例題を一緒に解いてみましょう。ここでのポイントは、16進数の値を、16進数、10進数、2進数の順に計算していくことです。まず最初に、16進数の値、E5を10進数に変換していきます。すると、Eは10進数の14、5はそのまま5に相当します。次に、この14と5を2進数に変換していきます。14を2進数に変換をしていくと、以前計算したときと同じようにしていき、1110となります。なお、この2進数の値は、4桁になるようにしてください。今回は4桁で結果が出ていますので、特に値を操作する必要はありません。次に、5を2進数に変換をしていくと、こちらも以前計算したときと同じようにしていき、101となります。しかし、ここでは4桁で表して欲しいので、101ではなくて先頭に0をつけて、0101とします。この2つを結合させることで、11100101、これが今回の答えとなります。
それでは練習問題です。16進数、ABを2進数に変換しなさい、という問題です。まずは、ABをそれぞれ10進数に変換していきます。すると、右の表のように、Aは10、Bは11になります。この10と11を2進数に変換していきます。10を2進数に変換するために、次のように計算をしていきます。すると、1010となります。次に、11を2進数に変換していきます。11を2進数に変換するために、次のように計算をしていきます。すると、1011となります。今回はどちらも4桁の2進数になっていますので、0を追加して4桁にする必要はありません。この2つの2進数の値を結合させて、答えは、10101011となります。