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
在这种情况下是掩码。
我想了解这个条件是什么意思。
是不是表示移位后就等于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
在这种情况下是掩码。