応用情報技術者試験に頻出する進数についてまとめました。
進数
進数とは
進数とは、N個の値を表す際に使う表現です。
例えば、
1~8の8個の値を表すのが8進数、1~10の10個の値を表すのが10進数です。
日常生活で使われているのは10進数でご存じの通り10で桁が繰り上がりますが、
8進数だと8で桁が繰り上がるため、10進数で10だと、8進数で12となります。
これからこのN進数を10進数に変換する方法を説明します。
なお、N進数のNを基数と呼びますので、基数変換といいます。
N進数から10進数への基数変換
基数変換には桁の重みを使って算出します。
重みとは、桁が上がるごとにかかってくる値のことです。
N進数の場合、桁が上がるごとに、
0001 … n^0の重み
0010 … n^1の重み
0100 … n^2の重み
小数点以下だと
0000.1 … n^-1の重み
0000.01 … n^-2の重み
0100.001 … n^-3の重み
がかかってきます。(「^」は乗数です)
例えば8進数の場合、1桁目だと8^0、1桁目だと8^1、1桁目だと8^2がかかります。
今回この重みを各桁の値にかけてあげて、合算すると10進数に変換されます。
演習問題
実際の試験の過去問を解いてみましょう。
応用情報技術者試験 令和元年秋期 午前問1 問題
IPA 応用情報技術者試験(AP) 問題より 問1 あるホテルは客室を1,000部屋もち、部屋番号は、数字4と9を使用しないで0001から順に数字4桁の番号としている。 部屋番号が0330の部屋は、何番目の部屋か。 選択肢: ア 204 イ 210 ウ 216 エ 218 |
応用情報技術者試験 令和元年秋期 午前問1 解答
まず、「数字4と9を使用しない」=「部屋番号の各桁の要素数が8個となる」ということと、部屋番号0330に4と9が登場しないことから、8進数の考え方を直接使えることが分かります。
よって、8進数0330を10進数に基数変換することで、何番目の部屋か算出することができます。
応用情報技術者試験 令和元年秋期 午前問1 別解
基数変換しなくても算出は可能です。
通常であれば部屋番号は「0330」ということで「0001」~「0330」で330部屋目なのですが、今回は「4」「9」を使用しないということなので
「0004、0009、0014、0019、……、0044、0049、……、0104、0109、……、0324、0329」
のパターンを330部屋から省いて何部屋目か算出します。
そのための計算式は以下の①~④です。
①1桁目が4と9のパターン数 ……0004~0329までなので、 33×2[4と9]=66 ②2桁目が4と9のパターン数……0040~0299までなので、 3×2 [4と9]=6 2桁目が4か9だと、1桁目は全て使用しないため 6×10=60 ③①と②を合計し、重複を削除 (1桁目が4か9で、2桁目が4か9の場合、①②でパターンが重複するため) ……①66+②60-(6×2[4と9])=114 ④部屋番号「0330」から③を引いて何部屋目か算出 ……330-114=216部屋目 |
進数の解説は以上です。
こちらに他の応用情報技術者試験のまとめについて掲載していますので、
良かったらご覧ください。
当ブログ「応用情報技術者解答解説」まとめページはこちら
今回の記事が何かの参考になれば幸いです。来訪ありがとうございました♪