2

私はビット演算子にかなり慣れていません。a3つの変数とがbありc、これらの値がバイナリであるとしましょう。

  a = 0001
  b = 0011
  c = 1011

今、私はビット単位で実行したいと思いますそしてこのように:

    a
AND b
AND c
--------
d = 0001

d &= a &= b &= c(私が期待したように)動作しませんが、どうすればこれを行うことができますか?ありがとう

4

4 に答える 4

17

これだけの何が問題なのですか。

d = a & b & c;
于 2010-05-22T14:47:20.950 に答える
3

あなたが欲しい:

d = a & b & c;

&=ビット単位のANDを意味し、割り当ても行います。

dもともとあなたが言ったようにあなた0の表現であると主張された場合、それは常に0と評価されます。なぜなら、何も& 0がに等しいから0です。

于 2010-05-22T14:50:10.947 に答える
1

これはうまくいくはずです

int a = 1;  // 0001
int b = 3;  // 0011
int c = 11; // 1011
int d = 0;

d = a & b & c;
于 2010-05-22T14:53:16.700 に答える
0

'd'をすべて1に初期化するのを忘れた可能性があり、デフォルトは0です。d= -1を割り当てるか、必要に応じてd = 0xffffffffを割り当てることで、すべてのビットを1に簡単に設定できます。 4ビットを使用すると、d=0xFで十分です。

そうは言っても、そのようなデイジーチェーン演算子は、他の人が示唆しているように、物事を分解するよりも読みにくい傾向があります。

于 2010-05-22T15:10:47.317 に答える