2016-08-18 198 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”。 –