基本情報技術者 2015年 秋期 午前(科目A) 問01
問題文
10進数の演算式7÷32の結果を2進数で表したものはどれか。
選択肢
ア:0.001011
イ:0.001101
ウ:0.00111(正解)
エ:0.0111
10進数の演算式7÷32の結果を2進数で表したものはどれか。【午前2 解説】
要点まとめ
- 結論:7÷32は2進数で0.00111となるため、選択肢の中ではウが正解であり桁移動で即導けます。
- 根拠:7は2進で111、32はだから小数点を左に5ビット移動すれば正しい2進表現が得られます。
- 差がつくポイント:2の冪で割るときは「小数点を左へnビット移動」することを暗記し、桁数の数え間違いを防ぎます。
正解の理由
7を2進数で表すと111、32はなので割り算は小数点を左に5ビット移動する操作です。
したがって 111 を 5 桁左に動かすと 0.00111 になり、これは選択肢のうち ウ に一致します。
また確認として各ビットを分数に戻すと となり一致します。
したがって 111 を 5 桁左に動かすと 0.00111 になり、これは選択肢のうち ウ に一致します。
また確認として各ビットを分数に戻すと となり一致します。
よくある誤解
- 「左へ/右へ」の混同:2^nで割るときは小数点を左へ移す(数値が小さくなる)ことを忘れやすい。
- 桁数の数え間違い:小数点移動の回数を1つ間違えると答えが大きく変わるため、桁を手で書いて確かめる癖をつける。
- 小数の直接変換ミス:10進の小数を2進に変換する際、掛け算法で誤って丸めると近似値を選んでしまう。
解法ステップ
- 分子7を2進数で表す:7 → 111。
- 分母32を2の冪で表す:32 = 。
- 2^5で割る操作は小数点を左へ5ビット移動することと同値なので、111 → 0.00111。
- 確認:各ビットを分数に戻し となるか確認する。
選択肢別の誤答解説
- ア: 0.001011
この値は で、 と一致しない。 - イ: 0.001101
この値は で正解より小さい。 - ウ: 0.00111
これは となり正解である。 - エ: 0.0111
この値は で大きすぎる。
補足コラム
- 一般則:整数をで割る場合、2進表記の小数点を左へnビット移動するだけで答えが得られます。
- 分母が2の冪でない場合:小数部分を求めるには「×2して整数部を取り出す」操作を繰り返し、周期的な繰り返しが出ることがあります(循環小数)。
- 実践コード例(Python):
def fraction_to_bin(numerator, denominator, bits=10):
x = numerator / denominator
res = '0.'
for _ in range(bits):
x *= 2
if x >= 1:
res += '1'
x -= 1
else:
res += '0'
return res
print(fraction_to_bin(7, 32, bits=8)) # -> '0.00111...'
この例は有限小数(0.00111)を正しく生成します。
FAQ
Q1: なぜ小数点を左に動かすのですか?
A1: 2^nで割るということは2進で桁がnつ分だけ価値が下がる(2の位が1つ下がる)操作に対応するため、小数点を左に移動します。
A1: 2^nで割るということは2進で桁がnつ分だけ価値が下がる(2の位が1つ下がる)操作に対応するため、小数点を左に移動します。
Q2: 分母が2の冪でない場合はどうすればいいですか?
A2: 「小数部分を2倍して整数部を取り出す」方法を繰り返すと2進小数が得られ、循環する場合は周期を検出できます。
A2: 「小数部分を2倍して整数部を取り出す」方法を繰り返すと2進小数が得られ、循環する場合は周期を検出できます。
Q3: 表示桁数が足りないときはどう確認する?
A3: 十分なビット数で生成してから、元の分数に戻して一致するかを確認すれば良いです。
A3: 十分なビット数で生成してから、元の分数に戻して一致するかを確認すれば良いです。
関連キーワード: 2進数、進数変換、分数の2進表現、ビットシフト、小数点移動、循環小数、基数変換

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

