2

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

  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;

&=表示按位与并赋值。

Ifd最初被分配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 回答