HOME»基本情報技術者試験掲示板»ここが全く理解できません
投稿する

[2171] ここが全く理解できません

 いっひーさん(No.1) 
掲示板を利用するのが初めてなのでここに質問してよいのかわからないですが、試しに質問させてください。
平成31年度春の問題の「最上位をパリティビットとする8ビット符号において,パリティビット以外の下位7ビットを得るためのビット演算はどれか。」という問題があるのですが、解説読んでても理解ができないのですが、もう少しかみ砕いて説明していただける方はいませんか?

詳しい問題はこんな感じです↓
問題:最上位をパリティビットとする8ビット符号において,パリティビット以外の下位7ビットを得るためのビット演算はどれか。
ア:16進数0FとのANDをとる。
イ:16進数0FとのORをとる。
ウ:16進数7FとのANDをとる
エ:16進数FFとのXOR(排他的論理和)をとる。

解説
論理演算を利用したビット操作には、論理積(AND)を用いて特定位置のビットを取り出す操作と、排他的論理和(XOR)を用いて特定位置のビットを反転させる操作があります。

論理積(AND)演算の真理値表は次のようになっています。
AND演算の真理値表
あるビットと"1"の論理積演算は、被演算ビットが0であれば結果が0、1であれば結果が1になるので被演算ビットがそのまま結果に反映されるという特徴をもっています。•0 AND 1 = 0
•1 AND 1 = 1
逆に、あるビットと"0"の論理積演算の結果は常に0になります。•0 AND 0 = 0
•1 AND 0 = 0
この問題では8ビット符号のうち下位7ビットを取り出したいので、最上位ビットを0、下位7ビットを"1"としたビット列「0111 1111」を用意し、8ビット符号との論理積をとることで下位7ビットだけを取り出せます。

2進数「0111 1111」を16進数で表すと「7F」なので正解は「ウ」となります。
2020.02.21 13:23
$74.05さん(No.2) 
16進数「7F」を2進数で表すと「0111 1111」ですね。

例えば適当に2進数を"1010 1010"とします。

  0111 1111  ←16進数「7F」
  1010 1010  ←適当な2進数
-------------
  0010 1010(AND)
         下位7bitを取り出せる。

このような感じで自分は理解しましたが。。。
参考になれば!!
2020.02.21 13:36
 いっひーさん(No.3) 
$74.05さん
親切にありがとうございます!やはり自分で具体例を考えるとわかりやすいみたいですね!
ぜひ、参考にさせていただきます(^▽^)
2020.02.21 13:54

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。
© 2010-2024 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop