2進数と論理演算
コンピュータが0と1だけで数を表すしくみを手で計算しながら理解し、2進数と10進数の変換と論理演算ができるようになります。
ねらい
コンピュータの中で数がどう表されるかを学びます。このレッスンを終えると、2進数と10進数を相互に変換でき、論理演算の結果を求められるようになります。
なぜ0と1なのか
コンピュータは、電気が流れているか、いないかという2つの状態で動きます。中間の状態を作らないので、少しくらい電圧が揺れても読み間違えません。この確実さが、0と1を使う理由です。
私たちが普段使うのは10進数で、0から9までの10種類を使い、9の次で桁が上がります。2進数は0と1の2種類だけを使い、1の次で桁が上がります。
2進数を10進数に直す
10進数では、右から順に1の位・10の位・100の位です。2進数では、右から順に1・2・4・8・16…と、2倍ずつ増えます。
2進数の 1101 を10進数にしてみます。
| 桁の重み | 8 | 4 | 2 | 1 |
|---|---|---|---|---|
| 桁の値 | 1 | 1 | 0 | 1 |
| 掛けた結果 | 8 | 4 | 0 | 1 |
合計は 8+4+0+1 で 13 です。1が立っている桁の重みを足すだけです。
10進数を2進数に直す
2で割り続けて、余りを下から並べます。
10進数の13を2進数にします。
- 13 ÷ 2 = 6 余り 1
- 6 ÷ 2 = 3 余り 0
- 3 ÷ 2 = 1 余り 1
- 1 ÷ 2 = 0 余り 1
余りを下から上へ読んで 1101 です。先ほどの逆になっていることを確かめてください。
ポイント
余りを読む向きを間違えやすいところです。最後に出た余りが最上位の桁になります。割り算を書いた順とは逆から読むと覚えます。
動かして確かめる
2進数の桁をオン/オフして合計を確かめるか、10進数を2で割り続けて2進数を作るか、 向きを切り替えて試してみましょう。
スタディード / 動く解説
2進数と10進数、どちらの向きも同じ4桁で行き来する。
桁をオン/オフして合計を確かめるか、2で割り続けて2進数を作るか。向きを切り替えて試してください。
何通り表せるか
nビットで表せる組み合わせは 2のn乗通りです。
- 1ビット… 2通り(0、1)
- 2ビット… 4通り(00、01、10、11)
- 3ビット… 8通り
- 8ビット… 256通り
桁を1つ増やすと、表せる数は2倍になります。色を光の三原色(赤・緑・青)それぞれ3ビットで表すなら、各色8通りなので、8×8×8で512色を表せます。
16進数という書き方(参考)
2進数は桁数が長くなりがちです。実務では、2進数4桁をまとめて1桁で表す16進数もよく使われます(0から9の数字とAからFの文字で16種類を表します)。ITパスポートでは、16進数への変換の計算は出題範囲外です。基本情報技術者試験など、より詳しい資格で学びます。
論理演算 — 真と偽の計算
0を偽、1を真とみなして行う計算が論理演算です。
| A | B | AND(論理積) | OR(論理和) | XOR(排他的論理和) |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
言葉にすると、こうなります。
- AND… 両方とも1のときだけ1。「かつ」です。
- OR… どちらか一方でも1なら1。「または」です。
- XOR… 2つが違うときだけ1。同じなら0です。
- NOT… 0と1を入れ替えます。
XORは「違いを見つける計算」です。同じものどうしなら0になるので、2つのデータを比べて変わった場所を探すのに使えます。
まとめ
コンピュータは、電気が流れているかいないかの2状態を使うため、0と1の2進数で数を表します。2進数から10進数へは1が立った桁の重みを足し、10進数から2進数へは2で割った余りを下から読みます。nビットで2のn乗通りを表せます。論理演算では、ANDが「両方」、ORが「どちらか」、XORが「違うとき」に1になります。
理解の確認
2進数 10110 を10進数で表すといくつになるでしょうか。計算の過程も示してください。
答え: 22 です。右から順に桁の重みは 1・2・4・8・16 なので、各桁に重みを当てはめます。
| 桁の重み | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|
| 桁の値 | 1 | 0 | 1 | 1 | 0 |
1が立っているのは重み16・4・2の桁なので、16+4+2=22 です。0の桁は足しません。確かめとして、22を2で割り続けると 22÷2=11余り0、11÷2=5余り1、5÷2=2余り1、2÷2=1余り0、1÷2=0余り1 となり、余りを下から読んで 10110 に戻ります。
分からなかった点・気になった点
読み込み中です。