- ベストアンサー
ビット演算について
【環境】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
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>ビットデータを反転し、判定したいビットと「&」すれば良いと思ったのですが・・・。 考え方は間違ってないです。 >1.手順が間違っておりますでしょうか? はい。 論理積は「&&」ではなく「&」です。 それと、異なる型の演算なので私なら ret = (0x80 & scanData) ? 0 : 1; とでも書きますが。
その他の回答 (1)
- titokani
- ベストアンサー率19% (341/1726)
回答No.1
&&じゃなくて&を使いましょう。
質問者
お礼
ご回答ありがとうございます! 出来ました^^
お礼
ご回答ありがとうございます! 記載いただいた方法、参考にさせていただきます^^