コンテンツにスキップ

付録1-2進法大好き!souta_1326君!

この章では、コンピュータを扱うには欠かせない2進法について説明します。
既に理解している方はこの章を飛ばして十分です。

はじめに

コンピュータを使って処理するとき、コンピュータはあらゆる文字を2進法を用いて表します。電圧の強弱だけで0と1を表せるので都合が良いのです。
例えば、人間が「123」と打ち込むと、コンピュータは「1111011」として扱います。

演習問題

答え

\(11111100101\)

答え

\(409\)

コンピュータの基本的な演算

いきなりコンピュータに「足し算しろ」「割り算しろ」といっても難しいのです。

まずは、コンピュータが簡単に扱える2進法での演算を紹介します。

NOT

\(NOT\ a\) という風に用います。
各桁の0と1を入れ替えるだけです。
例) \(NOT\ 01 = 10\)

AND

\(a\ AN\!D\ b\) という風に用います。 各桁ごとに

  • 両方 \(1\) であれば、\(1\)
  • それ以外であれば、\(0\) と計算します。

例) \(1100\ AND\ 1010 = 1000\)

OR

\(a\ OR\ b\) という風に用います。

各桁ごとに

  • どちらかが \(1\) であれば、\(1\)
  • どちらも \(0\) であれば、\(0\)

例) \(1100\ OR\ 1010 = 1110\)

XOR

\(a\ XOR\ b\) という風に用います。

各桁ごとに

  • 一方の桁ともう一方の桁が異なっていれば、\(1\)
  • 両方の桁が同じならば、\(0\)

例) \(1100\ XOR\ 1010 = 0110\)

ここまでのまとめ

ここまでの演算を表にまとめました。

a b NOT a NOT b a AND b a OR b a XOR b
1 1 0 0 1 1 0
1 0 0 1 0 1 1
0 1 1 0 0 1 1
0 0 1 1 0 0 0

これらの演算の共通点

四則演算(足し算、引き算、掛け算、割り算)では、ある桁の答えを求めるときに別の桁もみる必要があります。
例えば、足し算では1つ下の位をみて繰り上がり処理をする必要があります。
一方これらの演算ではそれぞれの桁を独立にみることで答えが出るので、コンピュータが処理しやすいのです。

演習問題

注意:NOT aの時、表示されている6桁のみ反転させてください。
例えば、NOT 100010を NOT 00100010と変換せず、そのまま計算してください。

1. \(NOT(100010)\ XOR\ 101010 =\ ?\)

答え

\( \begin{align} (NOT\ 100010)\ XOR\ 101010\ \\ &=\ 011101\ XOR\ 101010 \\ &=\ 110111 \end{align} \)

2. \(((110101\ XOR\ 100101)\ OR\ 101110)\ AND\ 110111 =\ ?\)

答え

\( \begin{align} ((110101\ XOR\ 100101)\ OR\ 101110)\ AND\ 110111 &= (010000\ OR\ 101110)\ AND\ 110111 \\ &= 111110\ AND\ 110111 \\ &= 110110 \end{align} \)

答え

\( \begin{align} (NOT\ 100101)\ AND\ (NOT\ (NOT\ 111011)) &=\ 011010\ AND\ 111011 \\ &=\ 011010 \end{align} \)

答え

\( \begin{align} NOT(110101\ AND\ 011010) &=\ NOT(010000) \\ &=\ 101111 \end{align} \)

答え

\( \begin{align} (NOT(110101))\ OR\ (NOT(011010)) &=\ 001010\ OR\ 100101 \\ &=\ 101111 \end{align} \)

答え

\( \begin{align} NOT(101000\ OR\ 001010) &=\ NOT(101010) \\ &=\ 010101 \end{align} \)

答え

\( \begin{align} NOT(101000)\ AND\ (NOT(001010)) &=\ 010111\ AND\ 110101 \\ &=\ 010101 \end{align} \)

次回予告

これらの演算を組み合わせて、足し算、引き算、掛け算、割り算をしてみましょう!