8ビットのデータX及びYの値をそれぞれ16進表現で0F,F0とするとき,8ビットのデータAの下位4ビットを反転させ,上位4ビットを0にする論理式はどれか。
ここで,X・Yは論理積を表し,Z̄は否定を表す。
正答3
解説
正解は3です。
ビット演算でマスクを使い、特定のビットだけを操作する問題です。
16進数の0Fは2進数で00001111、F0は11110000です。
あるビットを0にしたいときは0との論理積を取り、そのまま残したいときは1との論理積を取ります。
【選択肢別解説】
1:× A・Xは上位4ビットが0、下位4ビットがAのままの値になります。
これを否定すると、下位4ビットはAを反転した値になりますが、上位4ビットは0が反転して1になります。
上位4ビットを0にするという条件を満たしません。
2:× A・Yは上位4ビットがAのまま、下位4ビットが0の値になります。
これを否定すると上位4ビットが反転し、下位4ビットは1になります。
下位を反転させる操作になっていないので誤りです。
3:○ ĀはAの全ビットを反転した値です。
これとX(00001111)の論理積を取ると、上位4ビットは0との積で0になります。
下位4ビットは1との積なので、反転した値がそのまま残ります。
4:× ĀとY(11110000)の論理積では、上位4ビットに反転値が残り、下位4ビットが0になります。
求める結果と上下が逆になっています。
【ポイント】
「0との論理積で0にする」「1との論理和で1にする」「1との排他的論理和で反転する」はマスク操作の基本です。
先に反転してからマスクするか、マスクしてから反転するかで結果が変わる点に注意します。