まずは、10進数と2進数の桁があがる瞬間に注目してみよう。
10進数の桁について
10進数を数えてみる。
(1桁目)・・・0~9
(2桁目)・・・10~19,20~29,・・・・・・ 90~99
(3桁目)・・・100~199,200~299・・・・・・・,900~999
このようになる。
10進数の桁があがる様子は、1つの桁が9となった場合、桁上がりを起こしている。
10進数の桁があがった瞬間に注目
1 ・・・10^0
10 ・・・10^1
100 ・・・10^2
1000 ・・・10^3
10・・・・・・0 ・・・10^n
といったように桁上がりしている。
10進数の数の表し方(例)12345の場合
12345という数字は、単に1~5の数字の文字の並びとしてとることができる。
我々は、日常的に10進数で数字を扱っているため、
この12345という数字の並びを計算して「1万2千3百4十5」とであると理解している。
つまり、12345を見て、頭の中で次のように計算しているのである。
1*10^4+2*10^3+3*10^2+4*10^1+5*10^0
2進数の桁について
10進数を理解したので、2進数について考えてみる。
数えてみると
(1桁目) 00000
(1桁目) 00001
(2桁目) 00010
(2桁目) 00011
(3桁目) 00100
(3桁目) 00101
(3桁目) 00110
(3桁目) 00111
(4桁目) 01000
こうなる。
2進数の様子を見てみると、
全て規則的に0の次は、1となっている。
そして、今まで使用していた桁がすべて1で埋まった次は、
桁上がりを起こしていることがわかる。
2進数の桁があがった瞬間に注目
では、2進数の桁があがった瞬間つまり、1が1つの状態に注目してみる。
10進数では、いくつに該当するのだろうか。
00001・・・1(2^0)
00010・・・2(2^1)
00100・・・4(2^2)
01000・・・8(2^3)
10000・・・16(2^4)
確認してみると、すべて2^nとなっていることがわかる。
10進数の場合は、すべての桁が10^nであった。
2進数も同様に2^nである。
2進数の数の表し方(例)1010
1010という数字を考えてみる。
1つの桁がそれぞれ2^nであるので、10進数と同様に考えると
1010 = 1*2^3 + 0*2^2 + 1*2^1 + 0*2^0
ということだとわかる。
本題)10進数から2進数への変換方法
これまでのことから考えると
10進数の数字を頑張って、
2^n + 2^(n-1) + ・・・+2^1 + 2^0
で表せば変換できたことになる。
名付けて、「2^nいるかいらないかどっちでしょ~作戦」だ。
大きい数字から考えて、
元の数字を越えなければ、1、超えるならば0を答えていく方法だ。
例えば、23を考える
それぞれの桁をおさらいしておくと
2^0 = 1
2^1 = 2
2^2 = 4
2^3 = 8
2^4 = 16
2^5 = 32
2^6 = 64
・・・
では、23について考える。
2^6 は、23を超えるため、0
2^5 は、23を超えるため、0
2^4 は、23を超えないため、1
このとき、もとの23から2^4分を使用したため、
23 - 2^4
= 23 - 16
= 7
残った、7について考える。
2^3 は、7を超えるため、0
2^2 は、7を超えないため、1
このとき、7から2^2分を使用したため、
7 - 2^2 = 3
残った、3について考える。
2^1は、3を超えないため、1
このとき、2を使用したため
3 - 2 = 1
残った1について考える。
2^0 は、残った1なので1
今、計算した数字1と0を並べると
0010111
となる。
割り算で求める方法(例)25
もうお分かりだろう。
次の桁へは、2倍すればいいのである。
これは、元の数字を2で割れば、
今考えた、計算方法の手順を逆にたどることと同じである。
実際にやってみる。
2) 25
-----
2) 12・・・1
-----
2) 6・・・0
-----
2) 3・・・0
-----
2) 1・・・1
-----
2) 0・・・1
・・・後の数字は、2で割ったときの余りを表している。
この余りを、下から読むことで、10進数から2進数へ変換ができる。
今回の25は、2進数で表すと11001ということになる。