重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

【環境】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

A 回答 (2件)

>ビットデータを反転し、判定したいビットと「&」すれば良いと思ったのですが・・・。


考え方は間違ってないです。

>1.手順が間違っておりますでしょうか?
はい。
論理積は「&&」ではなく「&」です。

それと、異なる型の演算なので私なら
ret = (0x80 & scanData) ? 0 : 1;
とでも書きますが。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!

記載いただいた方法、参考にさせていただきます^^

お礼日時:2010/02/10 17:05

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

    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!

出来ました^^

お礼日時:2010/02/10 17:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!