基数変換についてメモ【応用情報技術者試験対策】
ひょんなことから表記試験を受験することになったので勉強がてら、気になる点についてまとめていく。
基数変換とは?
そもそも基数とは?
2進数や8、10、16進数などにおいて、各桁内で用いられる数値の数。
よくあるn進数表記をざっと書き出す。
・ 2進数:0,1
・ 8進数:0,1,2,3,4,5,6,7
・10進数:0,1,2,3,4,5,6,7,8,9
・16進数:1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
変換って何をするの?
n進数表記の要素に関係あるのね、となったところで基数変換って?
→各基数の間で変換すること。(そのままだな…)
10進数を2進数に基数変換、2進数を16進数に基数変換。
一旦10進数に変換し、各基数を除数として余りをアウトプットしていくと、ミスなくアウトプットすることが出来そう。(被除数 mod 除数 = 剰余)
実際に基数変換してみると?
10進数の14を基数変換する場合…
・ 2進数:1110
→ 被除数 = 14, 除数 = 基数 = 2, 剰余 = 被除数 mod 除数
→ 14 mod 2 = 0,(0)
7 mod 2 = 1,(10)
3 mod 2 = 1,(110)
1 mod 2 = 1(1110)
・ 8進数:16
→ 被除数 = 14, 除数 = 基数 = 8, 剰余 = 被除数 mod 除数
→ 14 mod 8 = 6,(6)
1 mod 8 = 1,(16)
・10進数:14
・16進数:E
※基数変換のコツとしては、一旦10進数を経由すると解りやすい。
0を基準に、桁が左へ進むたびに^1されていくのを覚えておく。
例:16進数の25Fを10進数に変換する場合…
・25F = 2 * 16^2 + 5 * 16^1 + 15 * 16^0
= 512 + 80 + 15
= 607 (※2進数だと001001011111)
小数を含む場合はどうなる?
0を基準に、桁が右へ進むたびに^-1されていくのを覚えておく。
例:16進数の0.EFを10進数に変換する場合…
・0.EF = 14 * 16^-1 + 15 * 16^-2
= 14 * 0.0625 + 15 * 0.00390625
= 0.875 + 0.05859375
= 0.93359375 (※2進数だと0.11101111)
ざっくり表にすると…
・整数部分は桁が左へ進むたびに^1されていき、
・小数点以下は桁が右へ進むたびに^-1されていく。
整数 ↔ 小数点以下
---------------------------
桁数:4,3,2,1 ↔ 1, 2, 3, 4
n乗:4,2,1,0 ↔ -1,-2,-4,-8
---------------------------
整数(小数点以下と比較用に桁数を左右入れ替え)
桁数: 1, 2, 3, 4
n乗: 0, 1, 2, 4
小数点以下
桁数: 1, 2, 3, 4
n乗:-1,-2,-4,-8
n進数当て問題も出題されるらしい…
計算式があって「これは何進数の計算式か?」みたいな問題もある模様。
その場合、上位桁から10を借りてくる必要がある部分の計算に着目し、そこからn進数部分を割り出すと早そう。
(上記条件に当てはまらなければ、基数部分をnにして正攻法のみかな)
例:(n進数を算出)
423 - 31 = 372
n + 2 - 3 = 7
n = 8
今日はこんなところで。
内容に相違などあればご指摘くださいー。