戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2019年 春期 午前(科目A)02


問題文

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

選択肢

16進数0FとのANDをとる。
16進数0FとのORをとる。
16進数7FとのANDをとる。(正解)
16進数FFとのXOR(排他的論理和)をとる。

🔒 解説は解答すると表示されます

パリティ付き8ビット符号の下位7ビット抽出【午前解説】

正解の理由

正解は です。理由はマスクとANDの性質によります。下位7ビットだけを取り出すには、取り出したいビット位置に1を、消したい(最上位)ビットに0を置いたビットマスクを用意し、元の値とAND演算を取ります。
具体的には で、任意の8ビット値 に対して を行うと最上位ビットだけが0になり、下位7ビットはそのまま得られます。例:

解法ステップ

  1. 問題のビット位置を確認:最上位(MSB)がパリティで、残り7ビットを取得したい。
  2. 取り出したいビットに1、消したいビットに0を置いたマスクを作成:
  3. マスクの16進表記を求める:
  4. AND 演算を適用:元のバイト を実行して下位7ビットを得る。

選択肢別の誤答解説

  • ア: 16進数0FとのANDをとる。
    • 0x0F = で、 AND すると下位4ビットしか残らず下位7ビットは得られない。
  • イ: 16進数0FとのORをとる。
    • OR は対象ビットを1にする操作。下位4ビットを1にしてしまい元の下位7ビットを取り出す目的に合わない。
  • ウ: 16進数7FとのANDをとる。
    • 0x7F = で、最上位のみクリアし下位7ビットをそのまま残すため正解。
  • エ: 16進数FFとのXOR(排他的論理和)をとる。
    • 0xFF = を XOR すると全ビットが反転されるだけで、下位7ビットを抽出する操作にはならない。
正解:

よくある誤解

  • 0x0F と AND をとれば下位7ビットが得られると誤解する(実際は下位4ビットしか残らない)。
  • XOR や OR を使えば「消せる」と思い込む(XOR は反転、OR は1にセットするだけで元に戻せない)。
  • 「最上位」がどちらか(MSB/LSB)を混同してマスク位置を間違える。

補足コラム

  • マスクの一般式: 「下位 n ビットを取り出すマスク」は で求められます。今回なら
  • 実装例(Python):
x = 0xAB            # 例: 0xAB = 0b10101011
lower7 = x & 0x7F   # 下位7ビットを抽出
print(hex(lower7))  # -> 0x2b
  • パリティビットの位置が LSB の場合はマスクを変える必要があります(例: 最下位を除く場合は別操作)。

FAQ

Q1: なぜ AND を使うのですか?
A1: AND はマスクの1の位置を保持し0の位置をクリアするため、特定ビットだけを抽出するのに最適です。
Q2: XOR で0にできませんか?
A2: XOR は対象ビットを反転するだけで、常に0にするには元のビットが1か0かで結果が異なり目的に合致しません。
Q3: マスクを計算する簡単な方法は?
A3: 「下位 n ビットなら (1<<n)-1」を使います。下位7ビットなら (1<<7)-1 = 127 = 0x7F。

関連キーワード: ビット演算、ビットマスク、パリティビット、0x7F、AND、MSB、下位ビット抽出、マスク生成、2進数表現、バイナリ演算
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について