計算機内部では、2進表記で数値を表すことが多い。
10進法: | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | ... |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2進法: | 0 | 1 | 10 | 11 | 100 | 101 | 110 | 111 | 1000 | 1001 | 1010 | ... |
2進法の10を「ジュウ」と読んではいけない。そう読むと 10進法の10のように聞こえるので、「イチゼロ」と読む。同じように、1001 は「イチゼロゼロイチ」などとなる。
あとで小数も扱うが、その場合も 2進数の 10.11 は「イチゼロテンイチイチ」のように読む。
しばらくは0以上の整数だけを扱う。
101のように書いた時、10進法の101(百一)なのか、2進法の101(イチゼロイチ)なのかわからない。そこで、文脈からどちらかわからない時は、101(10進)とか101(2進)のように書くことにする。ただし、これはこの授業での約束である。
世の中で普通に使われている書き方として、10進の場合は数の右下に小さく10という添え字を書き、2進の場合も同様に数の右下に小さく2と書く、というものがある。例えば 10110 とか 1012 といった具合である。しかし、コンピュータ上でそのような書き方は面倒。(特に、エディタの画面では無理。)そこで、数のうしろにカッコ書きで10進とか2進と書くことにしておく。
例: 101(2進)=5(10進) この場合、5は見ただけで10進だとわかるので、単に 101(2進)=5 と書いても良いだろう。
1 と 0 だけの区別なら、電流のオン・オフ、電圧の高・低などの区別で簡単に表すことができる。普通は電流ではなく、電圧の高低で表す。(電流を流すと電力を消費するから。) 1本の信号線で2進法の1ケタを表すことができ、n 本あれば n ケタの数を表すことができる。
もちろん、1本の信号線でも、10段階の異なる電圧を出せるようにすれば、10進の1ケタを表せる理屈である。しかし、以下のような理由から、高・低の2通りの電圧だけを用いるのが普通である。
また、2進法を用いることで演算が簡単になる。従って、演算を行なうための回路も簡単になる。
ケタ数が多くなる。人間が書いたり読んだりするのには不便。
x の y 乗は、数学では、xの右肩に y を書いて表す(xy) しかし、コンピュータ上でその書き方は面倒なので、x^y と書くことにする。^ はキャレットとかハットと呼ばれる。コンピュータによっては、^ は上向き矢印で表示される(相当古いマシンにそういうのが時々ある。) 例えば、2^3 は2の3乗、つまり、(10進の)8。
1から32までの数を順に2進法で書いて下さい。下記の表の続きを書く形で、紙 の上に書いて下さい。
10進法: 1 2 3 4 5 6 7 8 9 10 2進法: 1 10 11 100 101 110 111 1000 1001 1010 10進法: 11 12 13 14 15 16 17 18 19 20 2進法: 10進法: 21 22 23 24 25 26 27 28 29 30 2進法: 10進法: 31 32 2進法:
2進演算の基礎として加減乗除の計算を行ってみる。
10進数どうしの加法(足し算)と同様にして2進数どうしの加法もできる。 2進法では 1+1 = 10, 1+1+1 = 11 などとなることに注意。
2進法で以下の筆算を行いなさい:
110 101110 +) 111 +) 1110011 ------ ----------
減法も10進数の場合と同様である。 同じケタの中で引けない場合に上のケタから1をかりて来るのも10進法の場合と同じである。 10進法で 10 - 1 = 9, 100 - 1 = 99, 1000 - 1 = 999 となるのと同様に考えると、 2進法では 10 - 1 = 1, 100 - 1 = 11, 1000 - 1 = 111 となる。
2進法で以下の筆算を行いなさい:
1000 1010011 -) 101 -) 110110 ------- ----------
乗法も10進数の場合と同様だが、むしろ10進数の場合よりやさしい。 x が何であっても x * 0 = 0, x * 1 = x なので、10進法の場合の九九のようなものを覚える必要がない。
2進法で以下の筆算を行いなさい:
110 1011 x) 101 x) 1001 ------ -------
除法も10進数の場合よりやさしい。 商の各ケタに0か1しか並ばないからである。 ただし、まだ小数の2進表現を学んでいないので、整数の範囲での除法(商と余りを求める) のみを考える。小数についてはのちほど。
2進法で以下の筆算を行いなさい:
_______ __________ 11 ) 10011 1010 ) 11011110
10進表記では、数を10倍するとケタが左に1ケタずれる。 例えば、34 を 10倍すると、ケタが左に1ケタずれて 340 になる。
これと同じように、2進表現では、数を2倍するとケタが左に1ケタずれる。
例えば、
3(10進)=11(2進)
だが、両辺を2倍すると、
6(10進)=110(2進)
となる。
逆に、2進表現では、数を2で割ると1ケタ右にずれる。
例えば、
10(10進)=1010(2進)
だが、両辺を2で割ると、
5(10進)=101(2進)
となる。また、
13(10進)=1101(2進)
の両辺を2で割る(小数は使わず整数の範囲で割る)と、
6(10進)=110(2進)
となる。この場合、1101を右に1ケタずらすことで、1番下のケタにあっ た 1 は消滅したことに注意。