我可以獲得這些操作員本質上工作的詳細說明或文檔嗎?應用時,輸出是相同的。到目前爲止,我在這個問題上幾乎找不到任何東西。[n&1]和[n%2]如何工作?
回答
理論上,n&1
屏蔽或只保留一個數字的最低位。
n%2
將n
除以2
並返回餘數。
兩者都是常見的測試,以查看數字是偶數還是奇數。
允許編譯器用表達式的等效功能代替。所以編譯器可以針對這兩種情況發出n&1
的指令。
在不同的優化級別下打印該函數的彙編語言列表。
爲什麼downvote? –
'&'被稱爲[**按位運算符**](https://msdn.microsoft.com/en-us/library/4ke0e88k.aspx)。 –
@FirstStep:我在哪裏提及運營商?我知道它是衆多按位運算符之一。它被稱爲「按位AND」或「算術AND」。 –
- 1. 求解:T(n)= T(n/2)+ n/2 + 1
- 2. 的復發T(N)= 2T(N/2)+(N-1)
- 3. CharField max_length 2^n vs 2^n-1
- 4. 1 + 1/2 + 1/3 + - + 1/n =?
- 5. 如何解決:T(N)= T(N - 1)+ N
- 6. 如何在java中從2^n改爲(2^n + 1)?
- 7. Python數組操作,pi * [n + 1]^2 -pi * [n]^2
- 8. 復發:T(n)=(2 + 1/log n)T(n/2)
- 9. 如何找到,如果數2^n爲2^1總和 - 2^M
- 10. 找不到(1 + 2 + ... n)^ 2的總和?
- 11. 如何使用n-1和n + 1進行'添加'功能
- 12. 如何解決復發A(n)= A(n-1)+ n * log(n)?
- 13. 如何解決T(N)= T(N-2)+ T(2)+ N遞歸樹
- 14. 找到總和(1)+ sum(2)+ .... +(n)
- 15. ExecutorService(int n)和Thread.activeCount()如何工作?
- 16. PHP郵件中的換行符():\ n,\\ n和\ r \ n不工作
- 17. 如何從1..n中得到數的xor,對於給定的n? (例如1^2^3^...^n)?
- 18. 是什麼set.seed(n)和set.seed(N + 1)
- 19. numpy廣播(N,)和與(N,1)數組
- 20. C:如何將2^N轉換爲N?
- 21. $ n = 2; 10- $ N = 87
- 22. \ n不工作 「」
- 23. 復發T(n)= T(n - log(n))+ 1
- 24. 我需要計算結果1/1 + 2/2 + 3/3 + N/N在Java程序中
- 25. T(n-1)+ 1/lg(n)復發
- 26. 如何創建1乘N矩陣,元素從1到N(matlab)?
- 27. 一些如何ckeck是1和N
- 28. 新行(/ n)在Python 2中不工作
- 29. 如何計算^(1/n)?
- 30. 爲什麼Haskell「'n + 1'和'n'」中的遞歸習慣用法不是''n'和'n-1'「?
編譯器可能會優化它們以實現本質上相同的功能。 –
爲這兩個語句打印彙編語言並進行比較。還要比較不同優化級別的彙編語言。 –
@ThomasMatthews當用模糊的兩個冪來修飾時,就像在標題中一樣,是的。 – tofro