はじめに
本記事は基本情報技術者試験の勉強のアウトプットの一環で作りました。
間違っている所やもっと上手なやり方などあればコメントで教えていただければ幸いです。
2進数から10進数へ変換するフローチャートを考える
前提条件
・10111011(2進数表示)を10進数へ変換する
・自由に変数を設定できる。
結論
解説
①から⑤を順に追って説明します。
①
Binary:10進数へ変換したい2進数表示の1011011を入れる。
N:これから条件分岐によって、同じ処理を繰り返すためその回数を表現するために定める。
Decimal:条件分岐の処理1回につき、下1桁ずつ10進数に変換していくので、それを足し合わせるための箱の役割。最後まで足し合わせたらこれが答えになるので出力します。
②
もしもBinaryが0ではない場合、Trueにすすむので下1桁ずつの基数変換が始まります。終わるの(Falseに進む)はBinaryが0になった時です。
その処理が何回目なのか数えるためにNに1を足す。
N回目という考え方はこれから2進数の数字に各桁の重みを掛けるときに重要になるのです。
③
ここが肝です。
A:Binaryに10で割った物の余りを出すことによって下1桁を抽出します。
C:Aにその桁の重み、すなわちN=1のときは、2の0乗を掛けることによって10進数表記に変えます。
最後にDecimalという箱にCを足し合わせます。
④
Binaryを10で割ることによって、計算が終わっている下一桁を消す。
条件分岐でTrueになる場合毎回、下一桁が削られつづけるので最終的には0になり繰り返しが終了(Falseとなる)してDecimalの出力へと進む。
⑤
条件分岐でTrueに進んだ時に毎回更新していたCの足し合わせであるDecimalを出力。
10111011を入力したので187が出力されます!
終わりに
ググっても条件分岐を利用した2進数から10進数へ変換するフローチャートが無かったので誰かの参考になれば幸いです。
もっとアルゴリズムの構築能力を増強してこれからも基本情報技術者試験に向けた勉強のアウトプットをこまめにしていきたいと思います。