[英]What is if (c >> a & 1) does mean?
我試圖了解這種情況是什么意思。
這是否意味着在移動值后它將等於 1?
我的意思是這意味着 --> if (c >> a is 1)
注意: c >> a & 1
與(c >> a) & 1
。
按位 AND 對位進行運算,因此可能性是:
1101 & 0001 => 0001
0001 & 0001 => 0001
1010 & 0001 => 0000
0000 & 0001 => 0000
現在,在 C 上,任何不是零的東西都被視為true
,因此該語句的意思是“如果在移動最低有效位后為 1”,或者如果您正在處理奇數,則可能是“如果在移動值后為奇數”-甚至操作。
>>
運算符優先級高於&
。
所以c >> a & 1
意思是“將值c
向右移動a
位,然后檢查是否設置了移位值的最低位。像這樣挑出某些位值被稱為位掩碼,在此為1
案例是面具。
如果值c 的位a為真,則執行以下語句或塊。
a+1 a a-1 1 0
... --+---+---+---+-- ... -+---+---+
| z | y | x | | q | p |
... --+---+---+---+-- ... -+---+---+
... -+---+---+
>> a | z | y |
... -+---+---+
... -+---+---+
&& 1 | 0 | y |
... -+---+---+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.