【爆速理解の専門教養】プログラミング 「二進数」
情報系の学校に通っている僕が、学校で学んだプログラミングの知識をそのまま皆さんにお教えします!
二進数
プログラミングを学ぶ上で必ず最初に覚えなければならない概念の一つです。
そもそもコンピューターは、全ての物事を「1」と「0」の「on」「off」で区別しています。
例えば、
◇◇◆
◇◆◇
◆◇◇
この四角を、白が発光、黒が消灯の豆電球に見立て、その通りの羅列を表現したい場合、「白(1)がon」になり「黒(0)がoff」になります。
それをコンピューターの認識できる羅列に変更すると、
1 1 0
1 0 1
1 0 0
になります。
◇が1になり、◆が0という表現に変わるわけです。
それを改行無しで表したもの「110101100」というのが、コンピューターの理解できる二進数なのです。
二進数の計算
先程説明した二進数ですが、実はこれには計算があります。
僕たちがいつも使っている「0123456789…」という数字のうち、コンピューターは0と1しか理解することができないため、普段使っている数字を二進数に変換しなければならないのです。
また、補足で説明させいただくと、普段僕たちが使っている数え方は十進数と呼ばれるもので、「0~9」の数字を組み合わせて作り、ちょうど10を数えるときに繰り上がりします。対して、二進数は先ほども言った通り「0と1」を組み合わせ、2を数えるときに繰り上がりするものです。
それでは、試しに、「10」という数字を二進数に変換してみましょう。是非何か書くものを用意して、一緒にやってみましょう!
まず、10を2で割ります。
すると答えは5になりますよね?
紙に
2)10
5・・・0
という風に計算過程を記します。「・・・0」というのは、余りのことで、例えば次の数字、5を2で割ると答えは「2余り1」となり、そうなった場合に「・・・1」という風に余りを書きます。
今の説明通り計算を進めると、
2)10
2) 5・・・0
2) 2・・・1
という風になります。
出た答えの2をまたさらに2で割ります。
2)10
2) 5・・・0
2) 2・・・1
) 1・・・0
どんな数字でも最終的には1に行きつき、計算はそこで終了となります。
ここから2進数を読みとります。
一番最後に残った1を先頭に、余りの数字たちを下から上にかけて並べていきます。そうすると、「1010」ですね。
2)10
2) 5・・・0 ↑
2) 2・・・1 ↑
) 1・・・0 ↑
→
濃ゆく表したところを、「下から順に」です。これを上からやってしまうミスが多いため、気を付けてください!
どうでしょうか! 今僕と十進数を二進数に変換したのですが、まだいまいち感覚をつかめていないと思います。
なので、次は二進数から十進数に変換してみましょう!
十進数から二進数へ
さてさて、先程変換した「1010」を、また10に戻してみましょうか。
十進数から二進数に変換する場合、先程の計算とは異なり、ルールが重要になります。
二進数というのは、それぞれの桁に重みという概念があります。
一番右から数えはじめ、桁が左に移動するたびにその重みは2倍に増えていきます。
なので、「1010」の重みは「8421」ですね。これはどんな二進数の数字でも同じことが言えるため、例えば「1001」でも「8421」の重みは変わりません。
もっと言えば、「10011」という風に、全体の桁が5つの場合、重みは「16 8421」と、8をさらに2倍した数が次の桁の重みになります。
この重みのルールさえ理解できていれば、1010を十進数に変換する作業は7割終えていると言っていいでしょう。
一番最初の二進数の説明で、「1はon」「0はoff」といったのを覚えているでしょうか。
その決まり同様に、1010にかかる重みの「8421」のうち、二進数が0の桁はoffの状態なため、計算はしません。
そのため、1010に使う数字は、1にかかっている重みの「8と2」ということです。
ここまでくれば、理解できた方も多いかと思います! あとはそれらを足すだけです。
8+2=10
変換完了!
未だイメージをつかめていない方のため、他の数字を十進数に変換します。
1001→8421→4と2は除外され、8と1が残る。
8+1=9
よって1001の十進数は9ということになります。
1(on)になっている桁の重みは数え、0(off)になっている桁の重みは除外することで、十進数への変換が可能になります!
最後に練習問題をいくつか用意しているので、まとめも読んでいって下さい!
まとめ
いかがだったでしょうか!
二進数、暗号みたいで少し楽しいですよね。
二進数方十進数に変換するときのコツは
・元の数が1になるまで2で割り続ける。
・割り切ったのち、下から順に余りを並べていく。
十進数を二進数に変換するときのコツ
・その桁に当てはまる重みを覚える(計算する)
・ミスの内容に足し算する(意外と重要)
これらを抑えれば、十進数、二進数間での計算は完璧です!
練習問題
①次の十進数を二進数に変換しなさい。
(1) 8 (2) 13
②次の二進数を十進数に変換しなさい。
(1) 1011 (2) 110100
答えはコメント欄に貼っておきますので、是非コメントも残していってください!
それでは、またほかのnoteでお待ちしております。
こういった記事をこれからも楽しく更新していくので、よろしければサポートお願いします! サポートしていただいた分は、新しい発見に出会うための資金にさせていただき、またそれを記事にして、皆さんに還元していきたいと思っています!