引数
実行例にある数値を引数にします。
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」は「オ」です。
ホームに戻るボタン↓