#十進法と二進法#
ふだん我々が日常で使っている数字は「0,1,2,3...7,8,9」までの10種類です
そして最大値の9を超えると10になり、桁が増えます
このような表現を「十進法」といいます
これに対し、「1」と「0」の二種類で表現する
たとえば「0」で始まるとすぐに最大値の1に行き当たり、十進法でいうところの「2」ではなく「10」と表現する
十進法の「3」は11、続く「4」は100となり再び桁が上がります
これを2進法といいます
十進法の表現 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|---|
二進法の表現 | 0 | 1 | 10 | 11 | 100 | 101 | 110 | 111 | 1000 | 1001 | 1010 |
#「である」か「ではない」のデジタル情報#
コンピュータのデジタル情報は、「である = 1」か「ではない = 0」で表します
※この場合は0 = 無ではなく、「ではない」という情報があります
デジタル情報を入力し、主にCPUで演算したあと出力するわけです
「である」か「ではない」、オンかオフか、真(true)か偽(false)かの2択は、この情報の受け渡しや演算に伴うノイズを極力排するには都合がいいのです
もちろん、我々の前に出力される情報が生の「0や1」であるわけではないのですが
なお、様々なプログラムも
だいたいは
- 進む
- 「である」か「ではない」
- 繰り返し
から成り立っています
#変換法【二進数 → 十進数】#
「1」になっている桁固有の「重み」をすべて合算した数が、十進数の数値になります
##重みとは?##
2の0乗は1です
なんとなく納得がいきにくいかと思いますが、1です
2の1乗は2です
2の2乗は4...
2の3乗は8...
2の4乗は16...
2の5乗は32...
2の6乗は64...
2の7乗は128...
と倍々に増えていきます
これからは○○乗にあたる数値を、nという文字に当てはめます
nは位の順から1を引いた数になります
例えば、2進数の数値10110101は
数値 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 1 |
---|---|---|---|---|---|---|---|---|
位の順 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
n | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
重み | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
数値 × 重み | 128 | 0 | 32 | 16 | 0 | 4 | 0 | 1 |
1になっている桁の重みを合算すると
128 + 32 + 16 + 4 + 1 =
181
これが10進数における数値となります
#変換法【十進数 → 二進数】#
では、この181をまた二進数にしてみましょう
その方法は、
2で割った余りを並べるものです
そして商を2で割り続けて...
最後が1になったらそのまま1を表に入れ
式 | 商 | 余り |
---|---|---|
181 / 2 | 90 | 1 |
90 / 2 | 45 | 0 |
45 / 2 | 22 | 1 |
22 / 2 | 11 | 0 |
11 / 2 | 5 | 1 |
5 / 2 | 2 | 1 |
2 / 2 | 1 | 0 |
1 | 1 | 1 |
下から並べると「10110101」
上の数値と同じになりました