10進数から2進数への変換方法

f:id:ryoutaku_jo:20190401213814p:plain

【結論】

・コンピューターのデータは、
 全て2進数で表されている。

・人が一般的に用いるのは10進数なので、
 10進数で入力された情報を
 2進数に変換する必要がある

・整数の10進数を変換する場合は、2で割り続けて商と余りから求める。
 小数の10進数を変換する場合は、2で掛け続けて商から求める。

【目次】

【本題】

コンピューターは2進数だけ理解できる

コンピューターは、
データを2進数と呼ばれる数値で認識しています。

2進数とは、2を基数(または底)とした数値の事です。

基数(底)とは、その数字が一桁で表せられるパターンの数の事です。

例えば、日常的に使用している数字は、
「0、1、2、3、4、5、6、7、8、9」の
10パターンが一桁で表現できる数になります。
なので、これは「10進数」と呼ばれます。

2進数の場合は、「0、1」の
2パターンだけになります。

マトリックスでも下記のような文字の羅列が何度も登場しましたが、
それはあの映画がプログラムを題材にしたものだからです。

f:id:ryoutaku_jo:20190401215345j:plain

コンピュータは人間が日常的に使用する10進数を、そのまま理解する事が出来ません。

その為、10進数を2進数に変換する処理が必要になります。

その処理方法は、整数と小数で内容が異なります。
それぞれ分けて見てみます。

10進数(整数)から2進数に変換する方法

まず小数点を含まない整数だけの10進数の数値を、
2進数に変換する場合は、下記の流れてで処理します

1:整数を2で割って、商と余りを求める
2:商を更に2で割って、商と余りを求める
3;これを商が0になるまで続ける
4:計算結果の余りを、新しい順に頭から並べて数値を作る

では、具体例をみていきます。
今回は10進数「13」を2進数に変換します。

13÷2= 6(余り1)  
 6÷2=3(余り0)  
 3÷2=1(余り1)  
 1÷2=0(余り1)  

↓

1101

最終的に「1101」が
10進数「13」の2進数であることが分かりました。

10進数(小数)から2進数に変換する方法

次に小数の10進数を、2進数に変換するには、下記の流れで処理を行います。
なお、「12.34」の様に、整数の含んでいる場合は、
整数「12」だけ先ほどの処理で2進数に変換し、小数「0.34」だけ抜き出して、次の処理を行います。

1:小数に2を掛けて、商を求める
2;更に2を掛けて、商を求める
3:商が整数を超えた場合は、整数部分だけ抜き取る
4:小数部分が無くなるまで繰り返す
5:計算結果の商の整数部分を、古い順に頭から並べて数値を作る

では、具体例をみていきます。
今回は10進数「0.4375」を2進数に変換します。

0.4375×2=0.875
0.875×2=1.75
0.75×2=1.5
0.5×2=1.00.0111

最終的に、「0.0111」が10進数「0.4375」の2進数であることが分かりました。

なお、大抵の場合、何度2を掛けても小数部分が無くならないです。
このような状態になる小数は、「循環小数」と呼ばれます。

循環小数」は厳密に2進数を求めることが出来ないので、
コンピュータは近似値で数値を表します。

《今日の学習進捗(3年以内に10000時間に向けて)》

学習開始からの期間 :115日
今日までの合計時間:1082h
一日あたりの平均学習時間:9.5h
今日までに到達すべき目標時間:1050h
目標との解離:32h
「10,000時間」まで、

残り・・・「8918時間!」