【基本情報技術者試験対策#1】2進数と10進数への変換

2023年4月24日資格,基本情報技術者

今日から基本情報技術者試験の対策として各問題の対策記事を書いていこうと思います。

筆者のプロフィールはこちらです。

現役エンジニア

基本情報技術者試験には3回目でやっと合格
これから試験対策記事を書いて役に立ちたいと思っている

なぜ2進数を学ぶのか。何の役に立つの?

基本情報技術者試験の科目の1つとして、必ず存在する「2進数」
参考書を読んでみて理屈は理解できるけど、こんなこと勉強して役に立つの?と思った方も多いはず。私もそうでした。

実際に2進数を学んで、エンジニア業務で役に立ったことは正直、無い気がします。
(私が忘れているだけかもしれませんが)

実際の業務で使わないのに、なぜ2進数を学ぶのでしょう。
それは、基本情報技術者試験の試験要綱を読むと明らかになります。

基本情報技術者試験 試験要綱

どの参考書を開いても2進数の解説は第1章にあります。
つまり、2進数は「IT全般に関する基本的な事項」にあたるということです。

実際にコンピュータは2進数を使ってものを考えます。
電気信号のオン・オフで動くのです。
2進数とはそのオン・オフを「1」「0」で表している進数のことです。

ですので、役に立つとか役に立たないとかいうこと以前に、コンピュータの基本的な仕組みとして理解しておく必要があるという意味で学ぶのです。

2進数とは?

2進数は1桁上がるごとに、2の累乗分のデータ量を表すことができます。
例えば1桁であれば「1」と「0」の2通り(21)のデータ量を、2桁であれば、「00」、「01」、「10」、「11」の4通り(22)のデータ量を表すことができます。

2進数を10進数に変換する

基本情報技術者試験には、必ずと言っていいほど2進数を10進数に変換する問題が出てきます。

理由はよく分かりませんが、例えば2進数で表現すると桁が増えて読みにくいので、人間が理解しやすい10進数で表そうということかもしれません。

それでは変換を見ていきましょう。

例えば10進数の「365」という数字は「3×100+6×10+5×1」と表すことができます。各桁の値に、桁の重みを掛けて足しています。

では、2進数の「11011」を10進数に変換してみましょう。
考え方は一緒で、各桁の値に、桁の重みを掛けて足していきます。
「1×16+1×8+0×4+1×2+1×1」となり、10進数の27に変換できました。

10進数も2進数も1桁上がると倍々になっていく

このように、10進数であれば10を基数とし、2進数であれば2を基数として、桁が上がるたびに基数の倍々となっていきます。

10進数を2進数に変換する

では、逆はどうでしょうか。
例えば10進数の27をどうしたら「11011」に変換できるでしょう。

先ほど、各桁の値に桁の重みを掛けて足すことで2進数から10進数に変換することができました。

今回は逆変換なので、先ほどとは逆のことをしてあげれば答えが出ます。
27を各桁の重みで割った商を並べていきます。

「27÷16=1・・・11」
「11÷8=1・・・3」
「3÷4=0・・・3」
「3÷2=1・・・1」
「1÷1=1・・・0」

商を左から順に並べると「11011」となります。

小数点がある進数の変換

では小数点がある場合はどうでしょうか。
これも考えは変わらず、計算方法は一緒です。

小数点がある場合は、桁の重みが、少数第1位は2分の1、第2位は4分の1・・・となります。

例えば2進数「1111.001」を10進数に変換する場合は、
「1×8+1×4+1×2+1×1+0×0.5+0×0.25+1×0.125」となり、答えは15.125となります。

逆に10進数から2進数に変換する場合は、
「15.125÷8=1・・・7.125」
「7.125÷4=1・・・3.125」
「3.125÷2=1・・・1.125」
「1.125÷1=1・・・0.125」
「0.125÷0.5=0・・・0.125」
「0.125÷0.25=0・・・0.125」
「0.125÷0.125=1・・・0」
となり、商を左から並べると「1111.001」となります。

ただ、10進数からの変換は上記のように長くて面倒です。
そこで次の方法を使うと、もっと早く、楽に計算することができます。

10進数「15.125」を2進数に変換するときは「整数部」と「小数部」に分けて計算する。

整数部と小数部に分けて計算すると楽に変換できます

【整数部】
基数で割ります。2進数に変換する場合は2で割ります。
割って余りが出るので、それを下から上に並べて書きます
これを商が0になるまで繰り返します。

【小数部】
基数を掛けます。2進数に変換する場合は2を掛けます。
掛けた後の整数部分を上から下に並べて書きます。
これを小数部分が0になるまで繰り返します。

このようにすることで、10進数から対象の進法に楽に変換することができます。

それでは、次回は8進数や16進数についてです。

Twitterもやっています。