2016-08-18 197 views
-6

我可以獲得這些操作員本質上工作的詳細說明或文檔嗎?應用時,輸出是相同的。到目前爲止,我在這個問題上幾乎找不到任何東西。[n&1]和[n%2]如何工作?

+2

編譯器可能會優化它們以實現本質上相同的功能。 –

+1

爲這兩個語句打印彙編語言並進行比較。還要比較不同優化級別的彙編語言。 –

+0

@ThomasMatthews當用模糊的兩個冪來修飾時,就像在標題中一樣,是的。 – tofro

回答

5

理論上,n&1屏蔽或只保留一個數字的最低位。

n%2n除以2並返回餘數。

兩者都是常見的測試,以查看數字是偶數還是奇數。

允許編譯器用表達式的等效功能代替。所以編譯器可以針對這兩種情況發出n&1的指令。

在不同的優化級別下打印該函數的彙編語言列表。

+7

爲什麼downvote? –

+0

'&'被稱爲[**按位運算符**](https://msdn.microsoft.com/en-us/library/4ke0e88k.aspx)。 –

+0

@FirstStep:我在哪裏提及運營商?我知道它是衆多按位運算符之一。它被稱爲「按位AND」或「算術AND」。 –