基本情報技術者 2013年 秋期 午前(科目A) 問11
問題文
1文字が、縦48ドット、横32ドットで表される2値ビットマップのフォントがある。文字データが8,192種類あるとき、文字データ全体を保存するために必要な領域は何バイトか。ここで、1Mバイト=1,024kバイト、1kバイト=1,024バイトとし、文字データは圧縮しないものとする。
選択肢
ア:192k
イ:1.5M(正解)
ウ:12M
エ:96M
1文字が48×32ドットの2値ビットマップで文字データ8,192種を保存する領域は何バイトか【午前2 解説】
要点まとめ
- 結論→1文字は48×32=1536ビット、8,192文字で合計1,572,864バイト、つまり1.5Mバイトでイが正解です。
- 根拠→1536ビット×8,192=12,582,912ビットを8で割ってバイトに直し、1024で2回割ってMBに換算しています。
- 差がつくポイント→「ビットとバイトの違い」「1k=1024の扱い」「問題文の『圧縮しない』前提」を正確に把握することです。
正解の理由
正解: イ
理由は単純なビット数→バイト数→kバイト→Mバイトへの変換です。
理由は単純なビット数→バイト数→kバイト→Mバイトへの変換です。
- 1文字 = 48 × 32 = 1536ビット
- 全体 = 1536 × 8192 = 12,582,912ビット
- バイトに直す = 12,582,912 ÷ 8 = 1,572,864バイト
- kバイト = 1,572,864 ÷ 1024 = 1536kバイト
- Mバイト = 1536 ÷ 1024 = 1.5Mバイト
したがって選択肢の中では イ(1.5M)が一致します。
よくある誤解
- 「ビットとバイトを混同する」:1536をビットと見なすかバイトと見なすかで8倍の誤差が出ます。
- 「1kを1000と考える」:問題は1k=1024と指定されているため10進換算だとズレます。
- 「圧縮や符号化を想定する」:問題は圧縮なしと明記されているため、圧縮後サイズを考えては誤りです。
解法ステップ
- 1文字あたりのビット数を求める:(ビット)
- 全文字分のビット数:(ビット)
- バイトに変換:(バイト)
- kバイトへ:(kバイト)
- Mバイトへ:(Mバイト) → 1.5M(選択肢イ)
選択肢別の誤答解説
-
ア: 192k
- ありうる誤り例:ビット→バイトの変換を二重に誤って行い、1,572,864 ÷ 8 = 196,608(約192k)とした誤操作。ビット→バイトは1回だけ行います。
-
イ: イ(1.5M)
- 正解。上記の通り正しい単位変換を経て算出されます。
-
ウ: 12M
- ありうる誤り例:ビット数12,582,912をそのままバイトと見なしてしまう(つまり÷8し忘れる)と約12.0Mと解釈されます。ビット→バイトの変換忘れです。
-
エ: 96M
- ありうる誤り例:1536を誤って「バイト」と解釈し(本来はビット)、さらに計算過程で余分に8倍するなどのミスで値を大きくしてしまうケースです。誤った単位扱いと余分な乗算が原因です。
補足コラム
ビットマップフォントでは各ドットが1ビット(黒/白)で表現されるため、この問題のように単純にビット数を合計すれば必要領域が求まります。実務では可逆圧縮(RLEなど)やフォント専用のエンコーディングで格納容量を削減することが多いですが、試験では「圧縮しない」と明記されている設問では素直に計算してください。
簡単な確認用Pythonコード例:
簡単な確認用Pythonコード例:
chars = 8192 bits_per_char = 48*32 total_bits = chars * bits_per_char total_bytes = total_bits // 8 total_kb = total_bytes / 1024 total_mb = total_kb / 1024 print(total_bits, total_bytes, total_kb, total_mb) # 12582912 1572864 1536.0 1.5
FAQ
Q: なぜ8で割るのですか?
A: 1バイト=8ビットなので、ビット数をバイト数に変換するには8で割ります。
A: 1バイト=8ビットなので、ビット数をバイト数に変換するには8で割ります。
Q: 1kバイトは1000ではなく1024を使うのはなぜ?
A: 問題文で「1kバイト=1,024バイト」と明示されています。コンピュータ系の容量表記は2の累乗(1024)が標準です。
A: 問題文で「1kバイト=1,024バイト」と明示されています。コンピュータ系の容量表記は2の累乗(1024)が標準です。
Q: 圧縮を許すとどう変わりますか?
A: 圧縮率によりますが、単色領域が多ければRLE等で大幅に削減できます。本問は圧縮しない前提なので考慮不要です。
A: 圧縮率によりますが、単色領域が多ければRLE等で大幅に削減できます。本問は圧縮しない前提なので考慮不要です。
関連キーワード: ビットマップフォント、バイト変換、単位換算、ドット数、容量計算、kバイト換算、メモリ計算、試験対策

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

