我可以获得这些操作员本质上工作的详细说明或文档吗?应用时,输出是相同的。到目前为止,我在这个问题上几乎找不到任何东西。[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