- ベストアンサー
AND演算を利用してnから最下位1ビットぶんの桁だけを取り出す方法は?
- AND演算を利用してnから最下位1ビットぶんの桁だけを取り出す方法についてわかりません。
- なぜ一番右の桁で、XとFのAND条件の結果がXになるのかが理解できません。
- また、なぜXXXXを0XXXにするために4ビットシフトする必要があるのかも理解できません。
- みんなの回答 (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ビットに該当します。
その他の回答 (1)
- asuncion
- ベストアンサー率33% (2127/6290)
>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の要素そのものですね。
お礼
丁寧な回答をありがとうございました。 回答内容について、他の回答者様と甲乙つけ難かったのですが、最初に回答を頂いた方にBAを差し上げました。 いま勉強中なので、また質問した際にはよろしくお願いいたします。
お礼
丁寧な回答をありがとうございました。 一番に回答を頂いたので、BAを差し上げます。