2013-04-05 51 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置於一個正常的變量中,並且不知道更多的情況,我不知道是否可以做更好的事情。

相關問題