2進数、10進数、16進数の関係と演算

コンピュータの内部動作で、数値を扱う処理に2進数が使われます。
よって コンピュータに数を指定する表現で2進数を使うことがあります。
ですが、2進数の表現は、桁数が多いので表現しづらいものです。
例えば、200の10進数値を2進数で表現すると、 11001000で、8桁の表現になります。
実際に、下図の各スイッチ部分をクリックして、その値になることを確認してみましょう。
下図内の右側に、スイッチに対応する2進と10進の値が表示されています。 ここでJavaアプレットを使っています。
このメッセージが出るということは、実行できないシステムまたは設定になっていると思われます。
そのために各ボタンは機能しません。
(環境によりますが、これを(BitCalcFrame.jar)をダウンロードして実行・検証ができる)


スイッチ画像が表の中の2行目に並んでいます。8個の並びで表現できる情報量を8ビットと呼びます。
1行目の 7 6 5 4 3 2 1 0 が2進数の桁を表す番号です。
 これは右の桁から0、1、2・・・7と番号を付けており、0の桁が最も小さい桁です。
そして、3行目(128 64 32 16 8 4 2 1 の並びで初期値が0)が2進の各桁に対応する10進数の大きさです。
各スイッチをオンの1にすると、ここが対応する大きさの10進数値に変わります。 そしてこの3行目の合計値が、スイッチ全体を10進数に変換した値になっています。
上記の実験でわかるように、10進数より多く桁数を必要とする2進数は人間が扱うには 不便です。(機械からすると、2進が最も単純なのですが・・・)
コンピュータが扱う2進数を人間が扱う場合は、 2進を単純に変換できる16進数にして使うことが良くあります。
これは、2進数を下の桁から4ビットごと区切って、 左の表で16進へ変換した表現です。
4ビットごとに単純変換しますから 例えば16桁の2進数であれば 4桁の16進数で表せ、桁数が少ない分だけ表現が容易になります。
上記のスイッチが表す2進数を16数で表現すると2桁になりますが、 その16進数への変換結果を で 以下に表示することができます。
対応する16進数→FF
スイッチで適当な2進数をセットしてから その16進数を予想し、それが合っているか? 自分で納得するまで確かめてみましょう。

なお、2進数、10進数、16進数の 2や10や16を 基数と呼びます。
また2進数の加算演算は、桁ごとで行われ、その桁が共に1である時だけ、 その桁が0になり上の桁に桁上がりします。 桁上がりが起きた次の桁では桁上がり分も含めて加算されます。

以下で、1増える(1加算の)いくつかの例を示します。桁上がりの様子を解説します。

0000000000000000
0000000000000001 この行の1を足した値が下の行です。
0000000000000001 ここでは、桁上がりしません。0+1は1です。

0000000000000001
0000000000000001 この行の1を足した値が下の行です。
0000000000000010 桁上が 次の桁に加算されます。1+1は0です。

0000000000000011
0000000000000001 この行の1を足した値が下の行です。
0000000000000100 桁上が 次の桁に加算されます。そこでも桁上がりが起きて それが次の桁に加算されます。

0111111111111111
0000000000000001 この行の1を足した値が下の行です。
1000000000000000 桁上が 次の桁に加算されます。そこでも桁上がりが起きて それが次の桁に加算されます。そこでも桁上がり、次も桁上がり・・・・と15回の 桁上がりが起きます。(最後の桁上がりが1です)

1111111101111111
0000000000000001 この行の1を足した値が下の行です。
1111111110000000 桁上が 次の桁に加算されます。そこでも桁上がりが起きて それが次の桁に加算されます。そこでも桁上がり、次も桁上がり・・・・と7回の 桁上がりが起きます。(最後の桁上がりが1です)

この様子は、上記スイッチ列パネルの右にある1加算のボタンで確認できます。 動作の理屈が自分で納得できるまでクリックで1増やしてみましょう。 また、10数や16進数の場合と比較して考えてみましょう。

上記説明を、各自で理解して納得してほしいのですが、 人によって納得の度合いが様々です。 単にテスト対策の練習であるような反復練習ではなく、 どうして理屈が生まれたかという思考が大切です。 この辺をどの程度深く考えて納得するかで、 自分で判断できる技術者になれるか? なれないかが分かれる所だと感じます。
これまでの理屈もそうですが、 書いてあること単に納得して理解できたと思う感じ方の度合いが、 人によって違います。また実際の理解の度合いも人によって様々のようです。
ですから一般的に、どのくらい実験などを反芻すべきかということを言えないのですが、 この理屈を他の人に説明できる度合いまで理解して進むべき部分です。
そのためには、理屈を「どうして?」と考えながらの思考の繰り返しで、
00000001の2進に対応する10進数が1
00000010の2進に対応する10進数が2
00000100の2進に対応する10進数が4
00001000の2進に対応する10進数が8
・・
10000000の2進に対応する10進数が128
11111111の2進に対応する10進数が255、となることが記憶できてしまうほど行うとよいでしょう。
私の場合は当時、数十回の考える繰り返しを行ったと思います。

それから、30年以上経っていますが、 今でもこの辺の奥深い理屈は感慨深かく感じることがあります。