電子書籍の厳選無料作品が豊富!

基本情報技術者 平成23年・秋 問1 で質問です。
ネットの解説を読んでもわかりません。

AND演算を利用してnから最下位1ビットぶんの桁だけを取り出すには、以下のAND式になりますとありますが、

    XXXX
AND 000F
-----------
  000X

上記で、一番右の桁で、XとFのAND条件の結果が、なぜXになるのかがわかりません。
(その他の桁の、Xと0のAND条件が0になるのは理解できます)

また、「XXXX → 0XXXにする必要があります。すなわち右に4ビットシフトします」とありますが、右に1ビットシフトの間違えでは?なぜ4ビット??

根本が理解できていないので、初歩的な質問で申し訳ありません。

参照したURLを以下に書きます。
http://web-mondai.com/common-question-data/detai …

A 回答 (2件)

>最下位1ビットぶん


これは4ビットですね。

2進数の4ビット(4桁)と16進数の1桁が1対1に対応します。
16進数の(F)は2進数にすると(1111)

特定のビットを取り出す時にはそのビットを1、特定以外のビットを0にした'マスクビット'と論理積を取ります。

元データをAとすると
A・(論理積)0→(必ず)0


A・(論理積)1→A
これは
(1)Aが0の時
0・(論理積)1→0
(2)Aが1の時
1・(論理積)1→1
の2点より、元のAの値と同じになります。

>右に1ビットシフトの間違えでは?なぜ4ビット??
16進数の1桁(この場合は'F')は2進数の4ビットに該当します。
    • good
    • 0
この回答へのお礼

丁寧な回答をありがとうございました。
一番に回答を頂いたので、BAを差し上げます。

お礼日時:2012/09/08 17:31

>nから最下位1ビットぶんの桁



1ビット分、というのは何かの間違いではないか、と思います。
4ビット分が正しいように思います。

Fというのは、4ビットすべてが1である状態、つまり1111のことです。
その他の16進数における、4ビットの状態(0:オフ、1:オン)
0000:0
0001:1
0010:2
0011:3
0100:4
0101:5
0110:6
0111:7
1000:8
1001:9
1010:A
1011:B
1100:C
1101:D
1110:E
1111:F

XとFのANDをとるということは、要するに「Xの要素である何とか AND 1」を4回行なっているのです。
「何とか AND 1」の1ビットごとの結果は、
「何とか」が1ならば「1 AND 1」ですから1、
「何とか」が0ならば「0 AND 1」ですから0です。これらは、Xの要素そのものですね。
    • good
    • 0
この回答へのお礼

丁寧な回答をありがとうございました。
回答内容について、他の回答者様と甲乙つけ難かったのですが、最初に回答を頂いた方にBAを差し上げました。
いま勉強中なので、また質問した際にはよろしくお願いいたします。

お礼日時:2012/09/08 17:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!