第30問 画像のデータ量
デジタル画像は小さな点(画素)が並んでできています。横640画素・縦480画素で、1画素あたり24ビットで色を表す画像は何バイトになるでしょうか。画素数・全体のビット数・バイト数の順に計算しよう。1バイトは8ビットです(3か所の穴をうめよう)
難易度:★★★☆☆(3/標準)。共通テスト「情報I」で使われるDNCL(共通テスト用プログラム表記)の穴埋め問題です。JavaScriptを有効にすると、このページでプログラムを組み立てて実行しながら解けます。
プログラム
yoko = 640
tate = 480
irobit = 24
gasosu = yoko [A] tate
sobit = gasosu [B] irobit
byte = sobit [C] 8
表示する("画素数は" + gasosu + "画素、データ量は" + byte + "バイトです")
空欄 [A]・[B]・[C] に当てはまるものを、次の選択肢から選びます。
選択肢
ヒント
画素数は 横 × 縦。全体のビット数は 画素数 × 1画素のビット数。バイト数はビット数 ÷ 8(1バイト=8ビット)です
解答
- 空欄 [A] …
*
- 空欄 [B] …
*
- 空欄 [C] …
/
よくある間違い
- [A]
+ [B]* [C]/ … 画素は縦横にびっしり並んでいるので、640 + 480 = 1120 ではありません。横の640個が480行ぶん並ぶので、* を使って 640 * 480 = 307200画素です
- [A]
* [B]+ [C]/ … 1画素につき24ビット使うので、307200画素ぶんの合計はかけ算です。+ だと 307200 + 24 で24ビットしか増えません。* を使いましょう
- [A]
* [B]* [C]* … 1バイト=8ビットなので、ビット数を8でわるとバイト数になります。* だと逆に8倍になってしまいます。/ を使いましょう
- [A]
* [B]* [C]% … % はわり算の「あまり」です。7372800 % 8 はあまりの0になってしまいます。何バイトぶんあるかを知りたいので、わり算の / を使いましょう
- [A]
* [B]/ [C]/ … 1画素あたり24ビットを「使う」ので、わり算ではなくかけ算です。/ だと 307200 / 24 = 12800 とかえって小さくなってしまいます
- [A]
* [B]* [C]- … 8ビットのかたまりが何個あるかを数えるので、ひき算ではありません。- だと 7372800 - 8 とほとんど減りません。8でわって 921600バイトを求めます
ほかの問題