中的用途我試圖解決codefights中的問題,瀏覽網絡後,我找到了這個解決方案。但我不清楚它是如何工作的。&在(a&1)
a * (a & 1)^b * !(b & 1)^!!(((a^b) + 1) & 2)
中的用途我試圖解決codefights中的問題,瀏覽網絡後,我找到了這個解決方案。但我不清楚它是如何工作的。&在(a&1)
a * (a & 1)^b * !(b & 1)^!!(((a^b) + 1) & 2)
單個&
是逐位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如果是偶數。
請提取的外部鏈接的相關部分,所以不作回答容易死鏈接:) –
@TommyAndersen如何做到這一點?我不能幫助嗎? – Real73
請參閱此鏈接:http://stackoverflow.com/help/how-to-answer根據堆棧溢出指南編寫出色的答案,鏈接應附有相關鏈接的引用。例如,複製鏈接中與ops問題相關的文本並插入鏈接。這增加了一些上下文的答案,這將是有益的,即使鏈接應該停止工作。 :) –