2

私はCを初めて使用し、ビットマスキング操作の使用法を理解するのに苦労しています。たとえば、次のコードがあります

if((input & 0x08)== 0)
{

 //Do....//

}

入力を int 値 00000111 にしました。これは 2 進数と 16 進数で 7 ですが、この比較を行うと false と評価されます (if ステートメントに入ることはありません)。

これが私が理解していることであり、何が起こるべきかです

          00000111  input
        & 00001000  0x08
         ------------
          00000000  answer

だから私の質問は、どうすれば正しい出力を得ることができるかです。

4

1 に答える 1

5
int main(){
        int input = 7;

        if((input & 0x08)== 0)
        {
                printf("Hello!\n");
        }

        return 0;
}

そうです、このプログラムは "Hello!" を出力します。

コードに別の問題があるはずです。常に関数を作成し、最も単純な例をテストするようにしてください。

ステートメントのinput前にの値を出力してみてください。if

それが役に立てば幸い。

于 2013-01-27T19:23:48.377 に答える