10進数から2進数への変換
情報処理試験でよく見かける10進数から2進数への変換について整理してみました。
10進数から2進数への変換では整数部と小数部とを分けて計算する必要があります。
整数部の計算方法
整数部分は答えが”0″になるまで”2″で割っていった際の「余り」を並べることで求められます。
なぜ”2″で割った余りかというと、2進数の基数が”2″であるため(1桁が0または2の2種類)、2で割ると最小桁の値が余りとして求まるためです。残った商についてもう一回2で割ると、今度は次に小さい桁の値が余りとして求まります。その繰り返しでもう割れなくなる商が0のところまで余りを求めていくと2進数の全ての桁が求められます。
一番最初に割った余りが最小桁なので、求めた余りを割った順に小さい桁から並べると2進数の整数部分が求められるというわけです。
小数部の計算方法
一方で10進数の小数部分を2進数へ変換するには、小数部分に”2″を掛けて桁あふれした部分を並べていくことで求められます。掛ける値が”2″である理由は整数部分と同様に2進数の基数であるためですが、なぜ整数部分とは逆で「掛ける」のかというと、基数をかけると数字が一桁繰り上がるためです。
10進数の方がイメージしやすいかもしれません。一、十、百、千・・・と10進数の基数である10をかけていくことで1桁上ずつがっていきます。2進数でも2をかけることでこれと同じことが起っています。
小数部分に2をかけて桁あふれする部分は小数第一位(つまり一番上位の小数桁)の値です。その桁あふれした値を小数部分だけにして小数第一位部分を除き、再び2をかけてやることで今度は小数第二位の値が求まります。それを繰り返していくと2進数の小数部全てが求められます。
一番最初に桁あふれした部分が小数第一位、その後第二位、第三位と続くことから桁あふれした順に大きいほうから並べてやると2進数の小数部分が求められるというわけです。
Link -> 小数点数と途中式出力に対応した10進数→2進数変換フォーム