• ベストアンサー

ビット演算子について

ビット演算子のことがよく分かりませんので、結果の求め方を教えてください。ちなみに16進数、2進数などは分かります。 〈例〉(1) 0xf0 & 0xaa     (2)~0x55

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

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

& はAND演算で 0 & 0 → 0 0 & 1 → 0 1 & 0 → 0 1 & 1 → 1 になるつまり、両方が1の時1そうでない時0になる演算で (1)は、それを踏まえて 11110000(0xf0) 10101010(0xaa)なので、 10100000(0xa0)になります。 ちなみにこういう0xf0みたいなのをマスクという言い方をする場合があります。その部分だけ取り出すからです。(その部分以外を0にする) ~はNOT演算で 1 → 0 0 → 1 の様に、反対にする演算です。 それを踏まえて(2)は、 01010101(0x55) 10101010(0xaa)になります。

serusasujp
質問者

お礼

ありがとうございました。とてもよく分かりました。

その他の回答 (2)

  • kaZho_em
  • ベストアンサー率50% (2950/5879)
回答No.2

(1) 0xf0 → 1111 0000 b 0xaa → 1010 1010 b 対応するビット毎にandを取る。 bit7 : 1 and 1 = 1 bit6 : 1 and 0 = 0 bit5 : 1 and 1 = 1 bit4 : 1 and 0 = 0 bit3 : 0 and 1 = 0 bit2 : 0 and 0 = 0 bit1 : 0 and 1 = 0 bit0 : 0 and 0 = 0 よって、結果は 0xa0 (2) 0x55 → 0101 0101 b ~ は補数を取る意。ビット毎に0、1を反転。 よって、結果は 1010 1010 b = 0xaa

serusasujp
質問者

お礼

ありがとうございました。とてもよく分かりました。

  • mendokusa
  • ベストアンサー率13% (359/2726)
回答No.1

この辺ですかね 2進数にバラして計算して下さい

参考URL:
http://www9.plala.or.jp/sgwr-t/c/sec14.html
serusasujp
質問者

お礼

ありがとうございます。早速、該当ページ見てみました。

関連するQ&A

専門家に質問してみよう