如何判斷一個整數是否為奇數
阿新 • • 發佈:2019-01-06
要想判斷某個整數是否為奇數,首先我們要弄清楚“奇數”的概念。下面是數學中的定義:整數中,能被2整除
的數是“偶數”,反之是“奇數”,偶數可用2k表示 ,奇數可用2k+1表示,這裡k是整數。
那麼,根據這個定義我們很容易寫出如下程式達到判斷奇數的目的:
/*** 判斷某個整數是否為奇數
*
* @param i
* 要判斷的整數
* @return
* 返回判斷的結果
*/publicboolean isOdd(int i)
{
}
這段程式碼雖然可以實現功能,但是“%”的效率不是最高的,那麼有沒有更好的方法呢?答案是肯定的,利位
操作符“&”,也就是“按位與”,下面是這個方法的程式碼:
/*** 判斷某個整數是否為奇數
*
* @param i
* 要判斷的整數
* @return
* 返回判斷的結果
*/publicboolean isOdd(int i)
{
return (i&1) !=0;
}
這個方法相信很多人都知道,但是大部分都是“知其然,不知其所以然”,那麼到底為什麼呢?我們要先
楚“&”的用法。“&”就是按位與,也就是對兩個數的二進位制的每一位進行“與”的操作,可用下面的表格來
說明:
數值 | 二進位制 |
11309 | 0010 1100 0010 1101 |
798 | 0000 0011 0001 1110 |
11309&798 | 0000 0000 0000 1100 |
明白了“&”的用法就好說了,大家請注意,所有的奇數都有一個特點,也就是二進位制的最後一位必定是
“1”,相反,偶數最後一位必定是“0”。而“1”的二進位制是“0001”,也就是除了最後一位是“
為“0”,那麼無論什麼數字和“1”進行“&”的運算,得到的數除了最後一位,其餘也將全部為“0”,那麼“奇
數&1”的結果則必然是1,“偶數&1”的結果則必然是0。