頭に「?」がいっぱい
前回の投稿で基数変換について記述しましたが、ちょっと深掘りしていこうと思います。
試験の過去問でも基数変換の問題は割と出てきます。私はすこぶる苦手です。
私自身小難しいのが苦手なのでふわっとした感じで表記します。
1.まずは2進数の仕組み
---2進数とは---
コンピュータは人間と違って言葉を話すわけではありません。
コンピュータは独自の言葉で様々なことを認識します。その独自の言葉が「2進数」です。
2進数は「0」と「1」で構成されています。
ざっくりした認識は「いい」か「わるい」みたいな感じです。
人間みたいに「微妙」とかっていうのがない感じです。
2.2進数から10進数の変換
---足し算します---
これ、ぱっと見じゃ何が何だか分からん!と私は思いました。
なので私は自分の分かりやすい認識で考えることにしました。
表に記載されている2の〇乗っていうのを賢くない私がいちいち計算できないので
下の「1.2.4.8~~」の部分に着目しました。
その上での認識として右の数字に×2したら左の数字になると認識しました。
2の6乗=64 2の7乗=128 64×2=128 といった感じです。
この「11111111」を10進数に変換すると「255」のなります。
計算としては「128+64+32+16+8+4+2+1」です。
単純に表の下部の数字を足していくだけですね。
そのうえで次の2進数の例を10進数に変換します。
11110000
これを10進数に変換すると
240 になります。
ざっくりいうと「1」の表記がある「桁の重み」を「足し算」するだけです。
上記の表で見ると「128+64+32+16」の足し算の合計になります。
3.10進数から2進数の変換
---割り算します---
上記で足し算を行ったので、「だったら引き算!」とはなりませんでした。
ここで私は躓きました。引き算じゃないんかい...
10進数から2進数に変換するときは「割り算」
ここ大事です。
下部に変換の例を記します。
10進数「240」を2進数にしてみます。
240をどんどん2で割っていきます。
割れなくなったらそこで終わりです。
この計算の中で余りが出ますが、その余りが2進数でいう「1」の部分です。
上から順にみていくと「00001111」になります。
ですが、この場合「上から」ではなく「下から」記載します。
そういうルールなんだなっていう感じで覚えましょう。
なのでこの場合下から記載して
240 → 11110000
となります。
ざっくりいうと「10進数の数字」を「2」で割っていきます。
すると0と1の答えが並ぶので2進数の特徴である0と1の羅列ができます。
下から順に並べると毎度おなじみ2進数です。
重要なのは「割り算」して「下から」並べるということです。
8進数や16進数の変換はややこしくなるので次の機会に...
全くの初心者の私にとっては難しいことばかりで同じ境遇の方は躓くのではないか、と思います。
今後も学習を行う中で初心者が躓きそうなものを更新していこうと思います。
参考文献:栢木先生の基本情報技術者教室