if (c >> a & 1) 是什么意思?

What is if (c >> a & 1) does mean?

我想了解这个条件是什么意思。

是不是表示移位后就等于1了?

我的意思是不是这个意思 --> if (c >> a is 1)


注:c >> a & 1(c >> a) & 1相同。

上按位与运算,所以可能性是:

1101 & 0001 => 0001

0001 & 0001 => 0001

1010 & 0001 => 0000

0000 & 0001 => 0000

现在,在 C 上,任何非零的值都被视为 true,因此该语句的意思是“如果移位后最低有效位为 1”,或者可能“如果移位后值是奇数" 如果您正在处理奇偶运算。

如果值 c 的位 a 为真,则执行以下语句或块。

              a+1  a  a-1           1   0
       ... --+---+---+---+-- ... -+---+---+
             | z | y | x |        | q | p |
       ... --+---+---+---+-- ... -+---+---+


                             ... -+---+---+
>> a                              | z | y |
                             ... -+---+---+


                             ... -+---+---+
&& 1                              | 0 | y |
                             ... -+---+---+

>> 的运算符优先级高于 &.

所以c >> a & 1的意思是“将值c右移a位,然后检查移位值的最低位是否被设置。要挑出特定位像这样的值被称为 位掩码 并且 1 在这种情况下是掩码。