基本情報技術者 ~2進数[1]~



f:id:potato_head0809:20210116010233p:plain




こんにちは!ポテトヘッド(@potato_head0809)です!



今回は、コンピュータを理解する上で、基本となる2進数というものを



学んでいこうと思います。



意識したことはないかもしれませんが、我々の生活では



10進数が使われていることが大半です。



数を数えるとき、お金を払ってお釣りが返ってくるとき...などなど。



では、まず2進数とはどういうものなのかというところから見ていきましょう。



2進数とは...



私たちが数を数えるときは0から数えて、



10で桁が1つ増えますよね?



つまり、「0」「1」「2」「3」「4」「5」「6」「7」「8」「9」の



10個の数字を使って数を表しています。



では、2進数ではどうでしょう。



簡単です。10進数が10個の数字しか使えなかったので、2進数では2個の



数字しか使うことができません。簡単に言うとこんな感じです。



f:id:potato_head0809:20201201190238p:plain




8進数や16進数も同じです。



8進数では8個の数字、16進数では16個の数字を使って表します。



f:id:potato_head0809:20201201190415p:plain




桁の上がり方の理解に最初は苦労するかもしれませんが、



慣れれば簡単にイメージを掴めると思います。



この仕組みを理解できないと、次のn進数の基数変換などが



理解しにくいので、頑張って理解してください。笑



難しいと思わず、まずはゆっくり考えてみればそんなに難しいことではありません。



桁の重み



では次に基数変換する際に非常に重要になる桁の重みについて



学んでいこうと思います。



まずは、桁の重みの法則を図にしたので見てください。



f:id:potato_head0809:20201201191019p:plain




言ってしまえば、これに当てはめれば基数変換はできます。



それぐらい重要なものです。



例えば10進数の場合...。



1の位、10の位、100の位など聞いたことがありますよね?



上の図のnの部分に10を当てはめてみます。



まず、10の0乗は1(1の位)、10の1乗は10(10の位)、10の2乗は100(100の位)と



これで位を求められます。



普段何気なく扱っている数字もこれをもとに桁の重みを表現しています。



これは2進数や8進数、16進数でも変わりません。



これを使って基数変換を学んでいきましょう!



基数変換



基数変換とは、ある基数で表した数字を、別の基数表現に置き換えることをいいます。



例えば、10進数を2進数で表す。といったように変換を行うことです。



ではまずは、n進数から10進数に変換する方法から学んでいきます!



n進数から10進数への基数変換



まずは先ほど説明した桁の重みを思い出してください。



今回は2進数から10進数へ変換していきます。



2進数は「1001.011」を使っていきます。



そして説明に入ろうと思いますが、言葉でだらだらと説明しても



図を見て頂いたほうがわかりやすいと思いますので、見てください。



f:id:potato_head0809:20201201192729p:plain




まずは桁の重みの求め方です。



先ほど10進数で説明したように、nの部分に2を当てはめていきます。



なぜ2なのかというと、2進数から変換していくからです。



2の0乗は1、2の1乗は2、2の2乗は4、2の3乗は8、という風に求められますね。



そして図のように対応する値と桁の重みを掛けていきます。



そして求められた数字を足し合わせると...



2進数から10進数に変換したときの値が求められるのです!



では次は今回の反対、10進数からn進数に基数変換する方法を見ていきましょう。



10進数からn進数への基数変換



整数部と小数部で計算の方法は異なります。



整数部には割り算、小数部には掛け算を行って求めていきます。



これも図を見てイメージしてみてください。



まずは整数部の計算方法。



f:id:potato_head0809:20201201195944p:plain




図でも示したように、商が0になるまで繰り返します。



ここで重要になるのは「余り」です。



これについては後ほど説明します。



では次に小数部の計算方法。



f:id:potato_head0809:20201201200141p:plain




図にもあるように、小数部の計算では「変換したいn進数」と「変換する10進数の小数」を掛けます。



すると、計算結果の小数をn進数と掛けて...というように小数の部分が0になるまで掛け続けます。



ここで重要になるのは「整数部」の部分です。



これについても後ほど説明します。



さて、ここからは10進数を2進数に変換する例題を使って説明していきます。



まずは先ほど2進数から10進数に変換した際に



変換された「9.375」を使って元に戻るか確認してみましょう。



まずは整数部の計算から見ていきます。



f:id:potato_head0809:20201201223542p:plain




図の通りでどんどん割り算を繰り返していきます。



先ほど「余り」が重要と述べたのは、この余りが変換した時の結果になるからです。



商が0になるまで繰り返した割り算のそれぞれの余りは整数部の場合は下から順に並べます。



続いて小数部を見ていきましょう。



f:id:potato_head0809:20201201225246p:plain




整数部の計算とは違い、小数部の計算では掛け算を繰り返します。



計算の際の注意点としては、掛け算で求められた数の整数部が0ではない場合でも



次の掛け算をする時には整数部は0になっているということです。



そして先ほど述べた重要になるのは「整数部」というのは



変換した結果になるからです。



整数部の計算では「余り」、小数部の計算では「整数部」と



なかなかややこしいですが、覚えるしかありません。笑



さて話を戻しまして、小数部が0になるまで繰り返した掛け算の



それぞれの商は先ほどとは異なり上から順に並べます。



整数部の計算で得られた結果を下から並べ、



小数部の計算で得られた結果を上から並べると、



「1001.011」というようになります。



さいごに。



本日は2進数とは何か、基数変換の方法について学びました。



n進数から10進数への基数変換、10進数からn進数への基数変換を見てきたように、



ややこしい部分が多かったですね...。



n進数からn進数への基数変換などもありますが、今日の内容を理解できていれば



あとは応用するだけですので、本日の内容はとても重要になります。



難しいと感じるかもしれませんが、内容自体はそんなに難しいものではありません!



仕組みが分かれば簡単だと思えるはずです!



2進数の扱いは必ず必須になってくるので、がんばりましょう!



最後までご覧頂きありがとうございました。



宜しければツイッター(@potato_head0809)のフォローもお願いします!