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

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


問題文

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

選択肢

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

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

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

正解の理由

正解:
8ビット値 x の最上位(MSB)を0にして下位7ビットだけを取得するには、ビットマスクで上位ビットを0にする必要があります。16進数で 0x7F は2進数で です。AND 演算 を行うと、マスクの1の位置(下位7ビット)はそのまま保持され、マスクの0の位置(最上位)は強制的に0になります。これにより下位7ビットを得られます。

解法ステップ

  1. 「最上位をパリティビットとする」→ MSB を取り除き下位7ビットを取り出す必要があると理解する。
  2. 目的:MSB を 0 にして下位7ビットを保持するビットマスクを選ぶ。
  3. 下位7ビットを1、上位1ビットを0にするマスクは 0x7F()であると確認する。
  4. AND 演算を適用:結果 = 元の値 0x7F。

選択肢別の誤答解説

  • ア: 16進数0FとのANDをとる。
    • 0x0F = であり、ANDすると下位4ビットしか保持されません。下位7ビットを得る目的に合いません。
  • イ: 16進数0FとのORをとる。
    • OR はマスクの1の部分を強制的に1にします。0x0F と OR すると下位4ビットが1になり、元の下位ビットの値そのままではなくなります。
  • ウ: 16進数7FとのANDをとる。
    • 0x7F = で、AND により上位ビットが0になり下位7ビットが保持されるため正解です。
  • エ: 16進数FFとのXOR(排他的論理和)をとる。
    • 0xFF = と XOR すると全ビットが反転(NOT 相当)します。下位7ビットをそのまま取り出す操作ではありません。

よくある誤解

  • 「0x0Fで十分」と考える誤解:0x0F(00001111)だと下位4ビットしか残らず、7ビットは得られません。
  • 「ORやXORでも同じ」と誤認する点:ORは1を強制的に立て、XORはビットを反転するため、元の下位7ビットをそのまま取り出す目的には不適です。
  • ビッグエンディアン/リトルエンディアン混同:エンディアンはバイト順序の問題であり、同一バイト内のビットマスク操作には影響しません(MSB/LSB の意味を混同しないこと)。

補足コラム

  • マスクの考え方:ビット操作で特定のビット列を取り出す・消すにはAND(クリア)、OR(セット)、XOR(反転)の違いを押さえることが重要です。
  • 表記上の注意:16進数表記は 0x7F のように表し、2進数表記は のように示すと視覚的に理解しやすいです。
  • 実務では、パリティビットを除去してデータ部分だけを処理する場面があるため、マスクの選び方を正確にすることが求められます。

FAQ

Q: AND と OR の違いを短く教えてください。
A: AND はマスクの0でビットを0にし1で元の値を保持、OR はマスクの1でビットを1にし0で元の値を保持します。
Q: XOR はいつ使いますか?
A: XOR はマスクで1の位置のビットを反転します。変化を加えたいときやビットフラグの切替に使いますが、取り出しには使いません。
Q: 実際のコード例は?
A: 例えば Python なら次のように書きます。
x = 0b10110110  # 例: 8ビットの値(MSBはパリティビット)
lower7 = x & 0x7F
print(bin(lower7))  # 下位7ビットが得られる

関連キーワード: ビットマスク、パリティビット、AND演算、XOR、OR、16進数、2進数、ビット操作、MSB、LSB
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

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

クイズ画面へ遷移する

すぐに利用可能!

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

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