2013-04-05 32 views
0

我不认为这是可能的,但可以在1条件而不是2条件下完成吗?检查一个数字是否为偶数,而不是零,在1的条件?

我试着不要这样做

bool test = (Number1 & 1) == 0 && (Number1 > 0); 

或本

bool test = (Number1 & 1) == 0 && (Number1 != 0); 
+0

@Blachshma,有位之间的差异是不是和AND数字不为零,如果Number1为6,则bit1未设置但大于0. – Fredou 2013-04-05 23:08:28

+3

上述代码有什么问题? – Jon 2013-04-05 23:23:03

+0

@Jon,简短的版本是,获得Number1是昂贵的,我不能将它存储在本地变量。 – Fredou 2013-04-05 23:29:09

回答

4

将为所有偶数> = 2,假换所有的奇数返回true,以及所有的数字< = 0:

bool test = ((Number1 - 1) % 2 == 1); 
+0

嗯,感谢这给了我这个想法;对于in32和'((Number1-1)&(1 << 31 | 1))== 1'和((Number1-1)&(1 << 63 | 1))== 1'结束比模快,迄今为止我的测试工作 – Fredou 2013-04-06 06:23:39

+0

出于个人的不熟悉,我倾向于推荐按位操作,但是,是的,你看起来应该工作。 – JML 2013-04-06 12:31:15

0

尽管这在技术上将Number1到一个变量,我认为它会工作。我假设Number1从长时间运行的函数调用或属性返回?无论哪种方式:

private bool IsEvenNotZero(int num) { 
    return (num & 1) == 0 && (num != 0); 
} 

bool test = IsEvenNotZero(Number1); 

这将把它放在一个参数,你可以两次这样测试参数。我不知道为什么你不能把Number1置于一个正常的变量中,并且不知道更多的情况,我不知道是否可以做更好的事情。

相关问题