基本情報技術者過去問題 平成24年春期 午後問8 解説

問題文は他のサイトを別ウインドウで開いてご覧ください。

引数

実行例にある数値を引数にします。

引数
Data 0 0 1 1 0 0 1 1
Mask 0 0 0 1 0 0 0 1

設問1

& と | を取ってみます。

Data 0 0 1 1 0 0 1 1
Mask 0 0 0 1 0 0 0 1
0 0 0 1 0 0 0 1
0 0 1 1 0 0 1 1

検査した全てのビットが 1 のとき Mask と & は同じになります。
空欄「a」は「ウ」です。

次に検査した全てのビットが 0 になるように引数を変更して同じように & と | を取ってみます。
Data 0 0 1 0 0 0 1 0
Mask 0 0 0 1 0 0 0 1
0 0 0 0 0 0 0 0
0 0 1 1 0 0 1 1

& が全て 0 になりました。
空欄「b」は「ア」です。

設問2

もし Data が「0 0 0 0 0 0 0 0」だったら Mask の中に 1 が 0 個のとき 2 を返してしまうということに気がつけばこの問題は簡単です。

引数
Data 0 0 0 0 0 0 0 0
Mask 0 0 0 0 0 0 0 0

引数が上の表の場合、案1 でも 案3 でも 2 が返ってしまいます。
正しく動作するのは 案2 だけです。
空欄「c」は「イ」です。

設問3

空欄「d」と「e」は数えればいいだけです。
「d」はループ判定が9回あることに気をつけてください。
「e」はループ判定を1回しかしないことに気をつけてください。

空欄「d」は「ア」です。
空欄「e」は「ア」です。

「f」は実際にやってみればいいだけです。

Work と Work - 1 の & を取ります。

引数
Work 0 1 1 0 1 0 1 0
Work - 1 0 1 1 0 1 0 0 1
0 1 1 0 1 0 0 0

もう1回。

引数
Work 0 1 1 0 1 0 0 0
Work - 1 0 1 1 0 0 1 0 0
0 1 1 0 0 0 0 0

空欄「f」は「オ」です。


ホームに戻るボタン↓