在两位以上使用按位AND

时间:2010-05-22 14:45:29

标签: c++ bit-manipulation bit bitwise-operators

我对按位运算符很新。假设我有3个变量abc,这些值是二进制的:

  a = 0001
  b = 0011
  c = 1011

现在,我想按照这样执行按位:

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

d &= a &= b &= c不起作用(正如我预期的那样),但我怎么能这样做? 感谢

4 个答案:

答案 0 :(得分:17)

这是怎么回事。

d = a & b & c;

答案 1 :(得分:3)

你想:

d = a & b & c;

&=表示按位AND并且也分配。

如果d最初被指定为0你的表达式,那么它总是会评估为0,因为任何& 0都等于0

答案 2 :(得分:1)

这应该有效

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

d = a & b & c;

答案 3 :(得分:0)

您可能只是忘记将'd'初始化为全1,并且默认为0.您可以通过指定d = -1轻松地将所有位设置为1,或者如果您愿意,d = 0xffffffff,尽管你只使用4位,d = 0xF就足够了。

话虽如此,像其他人一样的菊花链操作员往往不如其他人所暗示的那么可读。