2016-11-08 100 views
-4

中的用途我試圖解決codefights中的問題,瀏覽網絡後,我找到了這個解決方案。但我不清楚它是如何工作的。&在(a&1)

a * (a & 1)^b * !(b & 1)^!!(((a^b) + 1) & 2) 

回答

4

單個&是逐位AND,這意味着該結果是,是在操作者的左側和右側設置的位。

作爲示例15 & 7或因爲它們以二進制表示:

1111 
& 
0111 

按位,並會導致與公共位的數設置:

1111 & 0111 = 0111 

當作出(a & 1)您正在測試是否設置了最低有效位(lsb),因爲您正在執行如下測試:

a 
& 
00000001 

如果a具有按位值:00000110,則結果將爲0,因爲沒有設置公用位,如果a具有按位值:00000111,則結果將爲1,因爲lsb設置爲a。

這是用於不同的情況,如果LSB設置,你知道這個數字是奇數,所以這個測試實際上是否是奇數或不是(1,3,5,7,...)。

看你的解決方案的第一部分:a * (a & 1)您正在使用的(0或1記)的值,1,如果a乘以a是奇數,0如果是偶數。

-1

這裏&是位運算符(適用於位並進行逐位操作)。對於更多細節參見thisthis

+0

請提取的外部鏈接的相關部分,所以不作回答容易死鏈接:) –

+0

@TommyAndersen如何做到這一點?我不能幫助嗎? – Real73

+0

請參閱此鏈接:http://stackoverflow.com/help/how-to-answer根據堆棧溢出指南編寫出色的答案,鏈接應附有相關鏈接的引用。例如,複製鏈接中與ops問題相關的文本並插入鏈接。這增加了一些上下文的答案,這將是有益的,即使鏈接應該停止工作。 :) –

相關問題