パリティビット除去で下位7ビットを残すには
基本情報技術者試験 平成31年度春期 午前 問2 / 基礎理論 › 離散数学
過去問にチャレンジ
最上位をパリティビットとする8ビット符号において,パリティビット以外の下位7ビットを得るためのビット演算はどれか。
- ア
16進数0FとのANDをとる。
- イ
16進数0FとのORをとる。
- ウ
16進数7FとのANDをとる。
- エ
16進数FFとのXOR(排他的論理和)をとる。
会話形式の解説
講師注目するのは、最上位だけを消し、下位7ビットは元の値のまま残すという条件です。
受験者最上位を0にできても、下位の値まで変わる演算ではいけないのですね。
講師その通りです。ANDでは、組み合わせる値が0の桁は0になり、1の桁は元の値が残ります。どんな並びの値が必要ですか。
受験者最上位が0で、残したい下位7桁がすべて1の値です。
講師それは2進数で01111111、16進数で7Fです。7FとのANDなら、最上位だけを消せます。
受験者0FとのANDも最上位を消せますが、0Fは00001111なので、下位7ビットのうち上の3桁まで消してしまいますね。
講師そうです。では、0FとのORではどうなりますか。
受験者下位4ビットがすべて1になり、元の値を保てません。最上位もそのまま残ります。
講師その通りです。ORで1を指定した桁は、元の値に関係なく1になります。FFとのXORはどうでしょうか。
受験者FFは全桁が1なので、XORでは8ビットすべてが反転します。下位7ビットも変わってしまいます。
講師正解は7FとのANDです。桁を残すか消すかを決めるときは、16進数を2進数に直して、各桁への作用を確かめると判断できます。
まとめ
下位7ビットを元の値のまま取り出すには、最上位だけを0にする必要があります。16進数7Fは2進数で01111111なので、これとのANDが適切です。0FとのANDは必要な桁まで消し、0FとのORは下位4ビットを1にします。FFとのXORは全ビットを反転させます。
解答・解説
正解はウです
この問題のテーマ
最上位のパリティビットを除き、下位7ビットを元の値のまま取り出す演算を問う問題です。
解き方の考え方
残したい桁を1、消したい桁を0にした値とANDをとります。16進数7Fは2進数で01111111なので、最上位だけを0にし、下位7ビットを保てます。
選択肢ごとの解説
- ×ア 16進数0FとのANDをとる。0Fは2進数で00001111です。これとのANDでは上位4ビットが0になるため、残すべき下位7ビットの一部まで消えてしまいます。
- ×イ 16進数0FとのORをとる。0FとのORでは下位4ビットがすべて1になります。最上位のパリティビットも元の値のままなので、求める7ビットを取り出せません。
- ○ウ 16進数7FとのANDをとる。7FとのANDでは、0に対応する最上位だけが消えます。1に対応する下位7ビットは変わらず、目的の値が得られます。
- ×エ 16進数FFとのXOR(排他的論理和)をとる。FFは8ビットすべてが1です。これとのXORでは全ビットが反転し、下位7ビットも元の値を保てません。
POINT
- ANDを使うと、残す桁と消す桁をビット単位で指定できます。
- ORで1を指定した桁は、元の値に関係なく1になります。
- XORで1を指定した桁は、元の値が反転します。
