(x>>1)&1 结果是什么?

What does (x>>1)&1 result?

我正在使用位,但我不理解这个运算符。

unsigned int number = 6;
number = (number>>1)&1;

数字中的结果值为 1,我不知道为什么。 6在二进制中是0110。 如果我向右移动 1 个位置,结果是 0011,也就是 3。 number中的值现在是1,也就是0011中的最后一位。操作return是最后一位吗??

谢谢

ANDing 0011 和 0001,结果是 0001。我没明白你的意思。

首先你做一个right shift操作。它将其左操作数中的每一位向右移动。运算符后面的数字决定了位移的位数。

0110 >> 1 = 0011

然后执行 bitwise AND 运算,对二进制形式的数字的每个位置的位进行逻辑与运算。

  0011
& 0001
  ----
= 0001

所以是的,如果您对 1 执行按位与运算,结果将是左操作数的最后一位。