よく使われるn進数
10進数、2進数、8進数、16進数の4つが情報処理でよく使われるn進数として挙げられます。
「コンピュータといえば2進数」はもう基本中の基本となるわけですが、その他にも、よく使われるn進数として8進数や16進数などがあります。
いや、8進数は正直あまり使いませんけど、でも情報処理の世界ではよく出てくるので無視できません。
基本的には2進数です。しかし、0と1しか使えない表記で常に数を表現していたら、いちいち桁数が嵩んで仕方ありません。
だから、ある程度まとまった区切りの数をひと桁であらわすことができて、かつコンピューターと相性がよいn進数表記が必要となります。
それが8進数と16進数です。
2進数であらわす数値を見てみましょう!
2進数の2という数字は「桁が進む数」を表しています。
「2になるごとに桁が進む数え方」という感じです。
これは同時に「使える数字の数」だと思って差し支えありません。
つまり2進数だと使える数字の数は2個。
それで収まらない時は、どんどん桁をあげていく。
10進数だと、使える数字の数は10個で収まりきらなきゃ桁あがり。
16進数なら16個使えて・・・という感じです。
ゼロは0です。これは10進数でも2進数でも同じことです | 0 | |||
1もそのまま。まだ2進数の使える数字だけで表せる範囲 | 1 | |||
2進数には「1の次」にあたる数字がありません。だから、1桁繰り上がることで「2」を表現します。 | 1 | 0 | ||
増えるのは必ず1桁目から。10の1桁目は0なので、0の次は1。したがって10の次の数字は11となります。 | 1 | 1 | ||
11の次。まず1桁目の1に1が足されるので次の桁に1が繰り上がります。そうすると、2桁目でも1に1が足されることになるので、再度繰り上がりが生じ、結果として100になります。 | 1 | 0 | 0 | |
増えるのは必ず1桁目から。100の1桁目は0なので、その次の数は101。 | 1 | 0 | 1 | |
101の1桁目が繰り上がって110 | 1 | 1 | 0 | |
増えるのは必ず1桁目から。110の1桁目は0なので、その次の数は111. | 1 | 1 | 1 | |
111の次なので、1桁目が繰り上がり110。そうすると2桁目も繰り上がって100。3桁目も同様に繰り上がります。 | 1 | 0 | 0 | 0 |
8進数と16進数だとどうなるか
8進数と16進数も基本は同じです。
それぞれの桁ごとに使える数字が、8進数では0~7。
16進数では、0~9~A~Fと変化するだけで、「使える数字の数で収まりきらなくなったら桁があがる」ことに違いはありません。



論理演算とベン図
コンピュータは、この論理演算をビットの演算に用いることで、様々な処理を実現しています。
論理回路のことを知るためには、論理演算をまず知らなきゃ始まりません。
論理演算というのは、「AND」「OR」「NOT」に代表される真偽値を用いた演算のことです。
こう書くと「なにか難しいこと言ってるなー」と思われるかもしれませんが、論理演算自体は特に難しい話ではありません。昔に「Aという条件に合致するグループ(つまりAが真)と、Bという条件に合致するグループ(つまりBが真)、双方を満たす集合はどれだ?」みたいな勉強やりませんでした?
まさに、これが論理演算です。
ベン図は集合を表す図です。
「ベン図」とか言われても、昔学校で習ったかもしれんけど覚えてない・・・という人のために、まずはベン図を軽くおさらいしておきましょう。
ベン図というのは集合(グループ)同士の関係を、図として視覚的に表したものです。
論理積(AND)は「●●かつ××」の場合です。
論理演算の論理積(AND)では、2つある条件の両方が合致するものを真とみなします。
論理和(OR)は「●●または××」の場合です。
論理演算の論理和(OR)では、2つある条件の、いずれかが合致するものを真とみなします。
否定(NOT)は「●●ではない」の場合です。
論理演算の否定(NOT)では、ある条件の「合致しない」ものを真とみなします。
論理演算と基本回路
論理演算する回路が論理回路。基本はやはり、論理積(AND)、論理和(OR)、否定(NOT)の3つです。基本回路と呼ばれています。
コンピュータが論理演算をするためには、実際にそれを行う電子回路が必要です。
コンピュータは論理回路の集合体です。
これらの電子回路を複数組み合わせることで複雑な制御を実現しているわけです。
論理積回路(AND回路)
入力がどちらも「1」だった時に、「1」を出力するのが論理積回路(AND)です。
ちなみに論理演算は、論理式という式で表すことができます。
論理積(AND)を示す演算記号「・」です。
A(入力)・B(入力)=Y(出力)
この時、入力としてA、Bが取りえる値の組み合わせは全部で4パターンです。
これに、対応する出力Yをくっつけて表としてまとめたものが真理値表です。
「どの入力時に、どんな値が得られるか」を知るための一覧表みたいなものですね。
そんなわけで、論理積回路(AND回路)の真理値表は次のようになります。
A | B | Y |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
論理和回路(OR回路)
入力がどちらか1つでも「1」だった時に、「1」を出力するのが論理和回路(OR回路)です。
論理和(OR)を示す演算記号は「+」。したがって、この場合の論理式は次のようになります。
A(入力)+B(入力)=Y(出力)
入力としてA、Bが取り得る値の組み合わせは4パターンです。なので、論理和回路(OR回路)の真理値表は次のようになります。
A | B | Y |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
否定回路(NOT回路)
入力が「0」なら「1」、「1」なら「0」を出力するといった具合に、入力値を反転させて出力するのが否定回路(NOT回路)です。
入力としてAが取りえる値は2パターンです。
否定回路(NOT回路)の真理値表は次のようになります。
A | Y |
0 | 1 |
1 | 0 |
基本回路を組み合わせた論理回路
NANDは否定論理積、NORは否定論理和、EOR(XOR)は排他的論理和という論理演算を行う回路です。
論理積回路(AND回路)、論理和回路(OR回路)、否定回路(NOT回路)という3つの基本回路を組み合わせると、さらに様々な論理回路を作り出すことができます。
基本回路3つのベン図を見るとよくわかるのですが、この3つだけだと拾いきれていない集合がたくさんありますよね。たとえば「2つの円が重なっているところ以外を抜き出したい」とか、「2つの円の外側だけを抜き出したい」とか。
「さらに様々な論理回路」というのは、そうした拾いきれていない集合を取り出すために使える論理回路なわけです。これはつまり、「より複雑な条件を用いて出力を制御できる」ことに他なりません。
どんなものがあるかというと、代表的なのが否定論理積回路(NAND回路)、否定論理和回路(NOR回路)、排他的論理和回路(EOR回路またはXOR回路)の3つです。
否定論理積回路(NAND回路)
否定論理積回路(NAND回路)は、論理積(AND)と否定(NOT)とを組み合わせた論理回路です。
論理積(AND)の結果を反転させたものが出力となるため、入力がどちらも「1」だった時は「0」が出力され、それ以外の時「1」になります。
否定論理積回路(NAND回路)の真理値表は以下のようになります。
A | B | Y |
0 | 0 | 1 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
否定論理和回路(NOR回路)
否定論理和回路(NOR回路)は、論理和(OR)と否定(NOT)とを組み合わせた論理回路です。
論理和(OR)の結果を反転させたものが出力となるため、いずれかの入力が「1」だった時は「0」が出力され、入力がどちらも「0」の時に「1」となります。
否定論理和回路(NOR回路)の真理値表は以下です。
A | B | Y |
0 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 0 |
排他的論理和回路(EOR回路またはXOR回路)
3つ目の排他的論理和回路(EOR回路またはXOR回路)は、ちょこっと複雑さが増しています。
排他的論理和(EOR、XOR)というのは、2つある入力のうち「片方だけが1」の場合に1となる論理演算です。
真理値表は以下です。
A | B | Y |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |