2

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

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

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

3 回答 3

8

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

一个例子:

二进制形式的125是01111101

所以

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

所以 125 是奇数 :)

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

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

正如用户在下面的评论中指出的那样,第二种解决方案速度较慢(以 μS 计)

于 2013-09-20T14:03:38.700 回答
2

如另一个答案所述,它是按位运算,但测试实际上是如果设置了最后一位,则它是奇数,因此==0. 因此,如果最后一位未设置,则为偶数。

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

于 2013-09-20T14:07:43.203 回答
0

一个更简单的方法是:

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

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

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

于 2013-09-20T14:08:18.627 回答