- ベストアンサー
実際に受験を致しましたが、未だに解けません。
" http://情報処理試験.jp/FE24a-pm/t08.html "のページの問題を久し振りに読みまして、未だに自分の理解度が及んでいないとの状況を自覚しました。 特に、設問2の修正案2・修正案3の性能の違いが私には分かりませんので、 大変に畏れ入りますが、「其処の正解が(カ)ではない」という事情の理由を教えて頂けませんでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
aの解答が ウ (Data & Mask) = Mask bの解答が ア (Data & Mask) = "00000000"B 設問2では, > プログラム1は,Mask 中に 1 のビットが1個以上あることが前提。 > この前提を取り除いて,Mask 中の 1 のビットが 0 個の場合 すなわち,Mask = "00000000"B の場合も考慮に入れると言っている。 Mask = "00000000"B である場合, (Data & Mask) = "00000000"B であるが,右辺は Mask 自身でもある。 よって,Mask = "00000000"B である場合は, aの解答 ウ (Data & Mask) = Mask bの解答 ア (Data & Mask) = "00000000"B のどちらも真となり,どちらの条件式も成り立つということ。 -------- 修正案(1)では,[a]が成り立って RC←2, それで処理が終わるので,最終的に RC=2。 返却値0を返さないので,不正解。 修正案(2)では,[b]が成り立って RC←0, それで処理が終わるので,最終的に RC=0。 返却値0を返すので,正解。 修正案(3)では,まず最初に RC←1。 次に[b]が成り立って RC←0。 続いて[a]が成り立って RC←2。 それで処理が終わるので,最終的に RC=2。 返却値0を返さないので,不正解。
補足
有り難う御座います。 修正案3の(a)の演算の際には、 たとえmaskの値が0になっていましょうとも、 もし其の論理積の結果がmaskの値と一致していましたら、 RCの返却値が矛盾を来たしますので、 其の展開を防ぐ為には、 修正案2の様なネストの適用が必要になるのですね。 非常に重要なポイントが分かりました。