コンテンツにスキップ

付録① 2進法大好き!souta_1326君

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

はじめに

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

演習問題

① 2021を2進数に変換しよう。

答え

11111100101

② 2進数の110011001を10進数に変換しよう。

答え

409

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

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

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

NOT

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

AND

a AND 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\ 100010)\ XOR\ 101010\ =\ ?\)

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

\(((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} \]

\((NOT\ 100101)\ AND\ (NOT\ (NOT\ 111011))\ =\ ?\)
ヒント: \(NOT\ (NOT\ a)\ =\ a\) です。

答え
\[ \begin{align} (NOT\ 100101)\ AND\ (NOT\ (NOT\ 111011)) &=\ 011010\ AND\ 111011 \\ &=\ 011010 \end{align} \]

\(NOT(110101\ AND\ 011010)\ =\ ?\)

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

\((NOT\ 110101)\ OR\ (NOT\ 011010) =\ ?\)

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

\(NOT(101000\ OR\ 001010) =\ ?\)

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

\((NOT\ 101000)\ AND\ (NOT\ 001010) =\ ?\)

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

次回予告

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