2進表記の基礎

計算機内部では、2進表記で数値を表すことが多い。

10進法:
各ケタの数字は 0〜9. 9の次はケタ上りする。 (10通りの数字を使う)
2進法:
各ケタの数字は 0か1. 1の次はケタ上りする。 (2通りの数字だけを使う)
10進法: 01234567 8 910...
2進法: 0110 11100101110111100010011010...

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 と書いても良いだろう。

なぜ2進法を使うか?

1 と 0 だけの区別なら、電流のオン・オフ、電圧の高・低などの区別で簡単に表すことができる。普通は電流ではなく、電圧の高低で表す。(電流を流すと電力を消費するから。) 1本の信号線で2進法の1ケタを表すことができ、n 本あれば n ケタの数を表すことができる。

もちろん、1本の信号線でも、10段階の異なる電圧を出せるようにすれば、10進の1ケタを表せる理屈である。しかし、以下のような理由から、高・低の2通りの電圧だけを用いるのが普通である。

また、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進演算の基礎(加減乗除)

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

2進数の桁シフト

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 は消滅したことに注意。