你能用非专业人的术语为我解释一下这段代码吗?

时间:2013-09-20 14:01:57

标签: c# if-statement statements

我正在做一个项目,我需要代码才能确定输入是否为奇数。 (我还需要能够确定它是否均匀

你能解释一下这意味着什么吗?主要是第一部分。

if((x & 1) == 0)
    printf("EVEN!\n");
else
    printf("ODD!\n");

3 个答案:

答案 0 :(得分:8)

这是一个按位操作。 AND操作屏蔽每一位并留下最后一位。如果最后一位是关闭的(你正在检查零),意味着它甚至意味着它是奇数。

一个例子:

二进制形式的

125是01111101

所以

01111101 AND
00000001 =
------------
00000001 

所以125是ODD:)

检查偶数或奇数的另一种方法是使用除法模块:

if (x % 2 == 0) printf("EVEN");
else printf("ODD");

如下面评论中的用户所述,第二种解决方案较慢(以μS计)

答案 1 :(得分:2)

如另一个答案中所述,它是bitwise operation,但测试实际上如果设置了最后一位,则它是ODD,因此==0。因此,如果未设置最后一位,则为偶数。

编辑:刚刚看到答案被删除了哦,好吧。

答案 2 :(得分:0)

更简单的方法是:

if( x % 2 == 0 )
{
  printf("EVEN!\n");
}
else
{
   printf("ODD!\n");
}

%或模数运算符返回余数。

http://msdn.microsoft.com/en-us/library/0w4e0fzs.aspx