今回は音声データのバッファリング容量の計算問題を解いてみます。基本情報技術者平成29年秋期 午前問31で出されている問題になります。
まずは問題を読んでみましょう。
問題
符号化速度が192kビット/秒の音声データ2.4Mバイトを,通信速度が128kビット/秒のネットワークを用いてダウンロードしながら途切れることなく再生するためには,再生開始前のデータのバッファリング時間として最低何秒間が必要か。
ア50 イ100 ウ150 エ250
解き方
まずは単位をそろえます
まずはビットとバイトが混在しているのでそろえます。今回はバイトにしても割り切れそうなのでなるべくシンプルにするためにバイトにしてみます。
すると符号化速度は192 ➗ 8 = 24kバイト/秒に
通信速度は128 ➗ 8 = 16kバイト/秒になります。
ここでなぜ8で割っているかを捕捉しておくと1バイト=8ビットだからです。
そして音声データの総量もkバイトにそろえた方がわかりやすいので変換しておきましょう。
2.4Mバイト = 2400Kバイト
になります。
これも
1000バイト = 1キロバイト
1000キロバイト = 1メガバイト
1000メガバイト = 1ギガバイト
1000ギガバイト = 1テラバイト
となるため前述のような変換が可能になります。
※単位については最後に詳しくみていきます。
音声の長さを計算
次に音声の長さを計算してみます。
音声データ全体 ➗ 符号化速度 = 長さの秒数
2400 ➗ 24 = 100
なので100秒の音声なのだということがわかります。
通信が完了する秒数を計算
通信完了時間は以下で求められます。
音声データ全体 ➗ 通信速度 = 通信完了時間
2400 ➗ 16 = 150
なので150秒になります。
答え
今回はバッファリング時間を求められています。バッファリング時間とは音声の再生が止まらないために、再生前に読み込んでおくデータをダウンロードする時間のことです。
今回の条件だと再生時の消化データ量192kビット、回線速度が128kビットなので単純に再生をすると途中で回線が追いつかず止まりながら再生されることになります。これを防ぐためにバッファリング時間が必要なんですね。
これらを考えると通信完了時間から音声の長さを引いてあげれば必要なバッファリング時間が計算できそうです。
150 – 100 = 50
つまり答えはアの50秒ということになります。
単位について
基本情報技術者試験では(一般社会でも)1000ごとに桁が上がることが前提になっているようですが、コンピュータの世界では1024ごとに桁が上がるという考え方があります。これは2進数が基本となるコンピュータの世界では1024の方がキリが良いからです。2^10=1024。そして1024バイトは1キビバイト(1kib)と表現されるのが正しいようです。なのでまとめると以下のようになります。
- 1024バイト = 1キロバイト(1kB)は✕。
- 1024バイト = 1キロバイト(1KB)は✕。
- 1000バイト = 1キロバイト(1kB)は○。
- 1024バイト = 1キビバイト(1KiB)は○。
1024バイト = 1キロバイト(1kB)は✕なんですね。割と普通に見かけるのは歴史的経緯があるようですが、現在正確なのは上記ということでした。
ポイントとしては
・一般的な10進数をもとにした単位がある
・コンピュータは2進数をもとにしている
・2進数をもとにしている場合、単位が大きくなると誤差も大きくなる(1TBの誤差は約92GB)
あたりを抑えておけば大丈夫そうです。
コメントを残す