- ベストアンサー
基本情報技術者試験のビットに関する問題
最上位をパリティビットとする8ビット符号において、パリティビット以外の下位7ビットを得るためのビット演算はどれか。 ア 16進数0FとのANDをとる イ 16進数0FとのORをとる ウ 16進数7FとのANDをとる エ 16進数FFとのXOR(排他的論理和)をとる 解答 ウ なぜ ウ の7FとのANDなのかさっぱり分かりません。ウだと2進数にした場合 01111111 ですよね?なぜこうなるのか分からないのです。 解説お願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
0 AND 0 = 0 0 AND 1 = 0 1 AND 0 = 0 1 AND 1 = 1 だから。 つまり、「0」とANDを行うことで不必要な部分は確実に0にでき、 「1」とANDをとることで「0」なら「0」、「1」なら「1」を求めることができる。 >パリティビット以外の下位7ビットを得るためのビット演算はどれか。 だから、最上位ビットだけ0にする方法が答え。
その他の回答 (2)
- okormazd
- ベストアンサー率50% (1224/2412)
元のビットが、abcdefgh (a~hは1か0) とする。 ア 16進数0FとのANDをとる abcdefgh 00001111 --------- 0000efgh 下位4ビットを得る。 イ 16進数0FとのORをとる abcdefgh 00001111 --------- abcd1111 こんなの。 ウ 16進数7FとのANDをとる abcdefgh 01111111 --------- 0bcdefgh 下位7ビットを得る。 エ 16進数FFとのXOR(排他的論理和)をとる abcdefgh 11111111 --------- a'b'c'd'e'f'g'h' (a'~h'はNOT(a~h)) 各ビットの反転。
- edomin7777
- ベストアンサー率40% (711/1750)
ウの7FとのANDをとる方法を実際にやってみれば判ります。 01111111 これと、他の8ビットの数字のANDを取ると最上位ビットは必ず0になります。最上位ビット(パリティビット)が1でも、 01111111 1abcdefg -------- 0abcdefg ビットごとのANDなので 0 AND 1=0 だからです。 他のビットは 1 AND a=a 1 AND b=b 1 AND c=c 1 AND d=d 1 AND e=e 1 AND f=f 1 AND g=g とそれぞれのビットの値が直接取得できるので、問題にある 「パリティビット以外の下位7ビットを得る」 には、最上位ビットを0でマスクした7FとのANDをとるのが正解になります。