我正在做一个项目,我需要代码才能确定输入是否为奇数。 (我还需要能够确定它是否均匀
你能解释一下这意味着什么吗?主要是第一部分。
if((x & 1) == 0)
printf("EVEN!\n");
else
printf("ODD!\n");
答案 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");
}
%或模数运算符返回余数。