マナビング基本情報技術者

パリティビット除去で下位7ビットを残すには

基本情報技術者試験 平成31年度春期 午前 問2 / 基礎理論 › 離散数学

過去問にチャレンジ

平成31年度春期 午前 問2

最上位をパリティビットとする8ビット符号において,パリティビット以外の下位7ビットを得るためのビット演算はどれか。

  1. ア

    16進数0FとのANDをとる。

  2. イ

    16進数0FとのORをとる。

  3. ウ

    16進数7FとのANDをとる。

  4. エ

    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ビットを保てます。

選択肢ごとの解説

  1. ×ア  16進数0FとのANDをとる。
    0Fは2進数で00001111です。これとのANDでは上位4ビットが0になるため、残すべき下位7ビットの一部まで消えてしまいます。
  2. ×イ  16進数0FとのORをとる。
    0FとのORでは下位4ビットがすべて1になります。最上位のパリティビットも元の値のままなので、求める7ビットを取り出せません。
  3. ○ウ  16進数7FとのANDをとる。
    7FとのANDでは、0に対応する最上位だけが消えます。1に対応する下位7ビットは変わらず、目的の値が得られます。
  4. ×エ  16進数FFとのXOR(排他的論理和)をとる。
    FFは8ビットすべてが1です。これとのXORでは全ビットが反転し、下位7ビットも元の値を保てません。

POINT

  • ANDを使うと、残す桁と消す桁をビット単位で指定できます。
  • ORで1を指定した桁は、元の値に関係なく1になります。
  • XORで1を指定した桁は、元の値が反転します。

※出典:平成31年度春期 基本情報技術者試験 午前 問2