• ベストアンサー

CASLIIの命令文の問題

問  AND演算を使って16進数1234より16進数0034を求め、これをメモリ上に格納するプログラムを作成せよ(ヒント:「34」だけを取り出すマスク値を考えましょう)。 このプログラムの組み方がよくわかりません。ある目的を得るために利用する値のことをマスク値というのはわかるのですが、それとAND演算を使って34だけを取り出すことができるのでしょうか?ご理解のある方、ご教授お願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • pipipi523
  • ベストアンサー率40% (148/365)
回答No.2

完全に間違いというわけではありませんが、 何のためにマスクするのかを考えてみてください この場合はおそらく下二桁を取り出したいのでしょう それならば、 XXXXとANDして00XXに出来る値がマスク値です 0001、0010、1000、0101(1285) に、 0000、0000、0011、0100(0034) をANDしても0085にはなりませんよね

g_jellyfish
質問者

お礼

なるほど 00FFつまり 0000、0000、1111、1111がマスク値となるのですね。 有難う御座いました。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

00FF をマスクにしたらどうですか?

  • pipipi523
  • ベストアンサー率40% (148/365)
回答No.1

ブール演算という奴ですね ANDはこうです 1 AND 1 = 1 1 AND 0 = 0 0 AND 0 = 0 0 AND 0 = 0 16進数なら2進数に変換して考えてください 例えば、 0100、0101(4、5)と、 0000、1111(0、F)をANDすると?

g_jellyfish
質問者

補足

お返事有難うございます。 AND命令で照らした場合、 0100、0101 0000、1111 ---------- 0000、0101 となりますね。 1234なら 0001、0010、0011、0100 となり、34を残せば 0000、0000、0011、0100 となりますね。 この解を出すものも 0000、0000、0011、0100 となるので、これがマスク値となるのでしょうか?

関連するQ&A