第43問 ダウンロードにかかる時間
200MB(メガバイト)の動画を、通信速度100Mbps(1秒間に100メガビット送れる回線)でダウンロードすると何秒かかるでしょうか。データ量は「バイト」、通信速度は「ビット」が単位なので、まず単位をビットにそろえてから、速度でわって時間を求めます。1バイトは8ビットです(2か所の穴をうめよう)
難易度:★★☆☆☆(2/やさしい)。共通テスト「情報I」で使われるDNCL(共通テスト用プログラム表記)の穴埋め問題です。JavaScriptを有効にすると、このページでプログラムを組み立てて実行しながら解けます。
プログラム
size = 200
speed = 100
bit = size [A] 8
byo = bit [B] speed
表示する("データ量は" + bit + "メガビット、ダウンロードに" + byo + "秒かかります")
空欄 [A]・[B] に当てはまるものを、次の選択肢から選びます。
選択肢
ヒント
手順は2つ。①バイトをビットにそろえる(1バイト=8ビットなので 200 * 8 = 1600メガビット)②通信速度でわる(1600 / 100 = 16秒)。単位をそろえてからわる、が計算のコツです
解答
よくある間違い
- [A]
/ [B]/ … 1バイトは8ビットなので、バイトをビットに直すと数は8倍に増えます。/ だと 200 / 8 = 25 と減ってしまい、答えも 0.25秒とおかしくなります。* を使って 200 * 8 = 1600メガビットにしましょう
- [A]
* [B]* … 1600メガビットを 1秒に100メガビット送れる回線で送るので、「100メガビットが何回分か」を数えます。* だと 1600 * 100 = 160000秒(44時間以上)になってしまいます。/ でわりましょう
- [A]
+ [B]/ … 200バイトに8をたすのではありません。1バイトごとに8ビットぶんあるので、+ だと 200 + 8 = 208 とほとんど増えません。8倍する * が正しいです
- [A]
- [B]/ … - だと 200 - 8 = 192 と、かえって少なくなってしまいます。バイトをビットに直すときは8倍に増えるので * を使います
- [A]
* [B]- … 1600 - 100 = 1500 は「ビットの引き算」で、秒にはなりません。1秒あたり100メガビット送れるので、全体を100でわると何秒かかるかが出ます
- [A]
* [B]% … % はわり算の「あまり」です。1600 % 100 = 0 になってしまい、時間が0秒になります。何秒かかるかを知りたいので / でわりましょう
- [A]
* [B]+ … 1600 + 100 = 1700 では、速度が速いほど時間が長いことになっておかしいです。速い回線ほど短い時間ですむので、速度ではわり算をします
ほかの問題