第29問 ビットと2の累乗
コンピュータは0と1を並べて数を表します。bit(=8)ビットで表せる場合の数と、そのとき表せる最大の整数を求めよう。場合の数は1に2をbit回かけて求め、表せる最大の整数は「場合の数から1をひいた値」(0から数えはじめるため)になります(2か所の穴をうめよう)
難易度:★★★☆☆(3/標準)。共通テスト「情報I」で使われるDNCL(共通テスト用プログラム表記)の穴埋め問題です。JavaScriptを有効にすると、このページでプログラムを組み立てて実行しながら解けます。
プログラム
bit = 8
baai = 1
i を 1 から bit まで 1 ずつ増やしながら繰り返す:
baai = baai [A] 2
saidai = baai [B] 1
表示する("場合の数は" + baai + "通り、最大の整数は" + saidai)
空欄 [A]・[B] に当てはまるものを、次の選択肢から選びます。
選択肢
ヒント
8ビットは2を8回かけるので 2×2×…×2 = 256通り。0から数えはじめるので表せる最大の整数は 256 − 1 = 255 です。くり返しのかけ算は *、最後の「1をひく」は - を使おう
解答
よくある間違い
- [A]
+ [B]- … 「2をかける」をくり返すので、たし算ではありません。+ だと 1 + 2 を8回で17にしかならず、2倍ずつには増えません。* を使うと 1→2→4→…→256 になります
- [A]
* [B]+ … 表せる最大の整数は場合の数より1小さいです(0から数えはじめるため)。+ だと 256 + 1 = 257 になってしまいます。- を使って 256 - 1 = 255 とします
- [A]
/ [B]- … 「2をかける」なのでわり算ではありません。/ だと 1 / 2 で小さくなり続けます。* を使って 2倍ずつ増やします
- [A]
* [B]* … 最後は「1をひく」のでかけ算ではありません。* だと 256 * 1 = 256 のままです。- を使って 256 - 1 = 255 とします
ほかの問題