• ベストアンサー

ビット演算について

【環境】WindowsXP(SP2)、VisualC++2005、MFC バイト中の特定のビットの状態を取得したいのですが、 BOOL ret;//戻り値用 BYTE data;//バイトデータ ファイルから1バイトのデータを取得し、例えば 「0011 1011」というデータだった場合、 最初(左端)の1バイトが0の場合に、 定義した戻り値用のBOOL変数にTRUEを代入したいのですが、 ret = 0x80 && ~scanData; のようにしてもうまくいきません・・・。 (かならず1(TRUE)となってしまいます) 手順としては、ビットデータを反転し、判定したいビットと「&」すれば良いと思ったのですが・・・。 1.手順が間違っておりますでしょうか?もし間違っている場合はどのような手順が正しい(一般的)なのでしょうか? 2.手順が間違ってない場合は判定・代入式のどこがおかしいでしょうか? ご教授お願いいたしますm(__)m

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

  • ベストアンサー
回答No.2

>ビットデータを反転し、判定したいビットと「&」すれば良いと思ったのですが・・・。 考え方は間違ってないです。 >1.手順が間違っておりますでしょうか? はい。 論理積は「&&」ではなく「&」です。 それと、異なる型の演算なので私なら ret = (0x80 & scanData) ? 0 : 1; とでも書きますが。

ya-cha
質問者

お礼

ご回答ありがとうございます! 記載いただいた方法、参考にさせていただきます^^

その他の回答 (1)

  • titokani
  • ベストアンサー率19% (341/1726)
回答No.1

&&じゃなくて&を使いましょう。

ya-cha
質問者

お礼

ご回答ありがとうございます! 出来ました^^

関連するQ&A

専門家に質問してみよう