我正在做一个项目,我需要代码来确定输入是否为奇数。(我还需要能够确定它是否是偶数
你能解释一下这是什么意思吗?主要是第一部分。
if((x & 1) == 0)
printf("EVEN!\n");
else
printf("ODD!\n");
我正在做一个项目,我需要代码来确定输入是否为奇数。(我还需要能够确定它是否是偶数
你能解释一下这是什么意思吗?主要是第一部分。
if((x & 1) == 0)
printf("EVEN!\n");
else
printf("ODD!\n");
这是一个按位运算。AND 操作屏蔽每一位并保留最后一位。如果最后一位关闭(您正在检查零),则意味着它甚至意味着它是奇怪的。
一个例子:
二进制形式的125是01111101
所以
01111101 AND
00000001 =
------------
00000001
所以 125 是奇数 :)
检查偶数或奇数的另一种方法是使用除法模块:
if (x % 2 == 0) printf("EVEN");
else printf("ODD");
正如用户在下面的评论中指出的那样,第二种解决方案速度较慢(以 μS 计)
如另一个答案所述,它是按位运算,但测试实际上是如果设置了最后一位,则它是奇数,因此==0
. 因此,如果最后一位未设置,则为偶数。
编辑:刚刚看到那个答案被删除了,哦,好吧。
一个更简单的方法是:
if( x % 2 == 0 )
{
printf("EVEN!\n");
}
else
{
printf("ODD!\n");
}
% 或取模运算符返回余数。