SPI練習問題-問7(n進法)
n進数に関する問題。
[設問1]次の数で一番小さな値になるのはどれか?
A 100101(2)
B 134(5)
C 29(10)
D 1202(3)
E 11000(2)+10101(2)
F 1001(3)-111(2)
解答と解説
使用する公式:
n進法の解き方に関しては、『SPI n進法 ~練習問題と徹底解説!~』のページで詳しく解説しているので、参考にしてください。早く解く方法なども紹介しています。
設問1の解答と解説:
一般的な解き方としては、解答群のA~Fの値を実際に比較できるように10進数に変換します。しかし、SPIは時間との勝負なので一つ一つ全て10進数に変換していくと大きな時間ロストなってしまうので、省略できるところは省略していきます。
STEP1:DとFを比較
まず、Dの1202(3)と、Fの1001(3)を比較して欲しいのですが、いずれも3進数です。よって、見ただけでFの1001(3)の方が小さいと分かりますよね?Fは更にそこから111(2)を引くので更に小さい値になることがわかります。よって、計算をしなくても以下が成り立つことが瞬時にわかるはずです。
D>F
STEP2:AとEを比較
Aの100101(2)と、Eの11000(2)+10101(2)はいずれも2進数なので、そのままの状態で比較することができます。ただ、Eは足し算の状態なので足し算だけやってしまいます。
11000(2)
+10101(2) 101101(2)
よって、
E>A
STEP3:残りを10進数に変換する
現時点で残っているのは、A、B、C、Fの4つのみです。更にSTEP1、STEP2のようなやり方で比較して絞っていくことも可能ですが、あまり考え過ぎて時間を使ってしまうくらいなら、さっさと10進数に変換してから比較した方が結果的には早くなります。
n進数から10進数への変換方法は、『n進数から10進数への変換方法』のページをご覧ください。
以下の計算方法は、上記ページに記載している最速の解き方で計算しているため、通常の掛け算や足し算の優先順位と異なる計算方法で解いています。足し算と掛け算の結果がおかしいのでは?と感じた方は、上記のページの最速の解き方をご確認ください。
Aを10進数に変換する
100101(2)
=1×2+0×2+0×2+1×2+0×2+1
=37
Bを10進数に変換する
134(5)
=1×5+3×5+4
=44
Cは変換不要
Cは元々10進数なので変換する必要がありません。
Fを10進数に変換する
1001(3)
=1×3+0×3+0×3+1
=28
111(2)
=1×2+1×2+1
=7
1001(3)-111(2)
=28-7
=21
よって、一番小さい数となるのは、Fの21
解答:C