[英]What is the meaning of the & operator?
在以下代碼中:
Expression<Func<int, bool>> isOdd = i => (i & 1) == 1;
...... (i & 1) == 1
是什么意思?
按位AND 。 在這種情況下,檢查是否設置了i
的最后一位。 如果是,則它必須是奇數,因為最后一位代表1而所有其他位代表偶數。
&是一個按位AND運算符,AND是二進制系統中的基本運算之一。
AND表示'如果A和B都打開'。 現實世界的例子是兩個串聯的開關。 只有當兩者都允許電流通過時,電流才會通過。
在計算機中,這些不是物理開關而是半導體,它們的功能稱為邏輯門 。 它們與開關做同樣的事情 - 對電流或無電流做出反應。
當應用於整數時,一個數字中的每個位與另一個數字中的每個位組合。 因此,要理解按位運算符AND,您需要將數字轉換為二進制,然后對每對匹配位執行AND運算。
這就是為什么:
00011011 (odd number)
AND
00000001 (& 1)
==
00000001 (results in 1)
而
00011010 (even number)
AND
00000001 (& 1)
==
00000000 (results in 0)
因此,(&1)操作使用AND邏輯將最右邊的位與1進行比較。 所有其他位都被有效忽略,因為任何東西都沒有任何東西。
這相當於檢查數字是否為奇數(所有奇數的最右位都等於1)。
以上內容改編自我寫給這個問題的類似答案。
那就是檢查最后一位是否打開(這使得它變為奇數)。 注意,不是專門針對linq,您可以在sql或c#代碼上執行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.