1. 程式人生 > >如何判斷一個整數是否為奇數

如何判斷一個整數是否為奇數

        要想判斷某個整數是否為奇數,首先我們要弄清楚“奇數”的概念。下面是數學中的定義:整數中,能被2整除

的數是“偶數”,反之是“奇數”,偶數可用2k表示 ,奇數可用2k+1表示,這裡k是整數。

        那麼,根據這個定義我們很容易寫出如下程式達到判斷奇數的目的: 

/**
     * 判斷某個整數是否為奇數
     * 
     * 
@param i
     *                 要判斷的整數
     * 
@return
     *                 返回判斷的結果
     
*/publicboolean isOdd(int i)
    {
        
return (i%2!=0;
    }

這段程式碼雖然可以實現功能,但是“%”的效率不是最高的,那麼有沒有更好的方法呢?答案是肯定的,利位

操作符“&”,也就是“按位與”,下面是這個方法的程式碼:

/**
     * 判斷某個整數是否為奇數
     * 
     * 
@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”,也就是除了最後一位是“

1”,其餘全

為“0”,那麼無論什麼數字和“1”進行“&”的運算,得到的數除了最後一位,其餘也將全部為“0”,那麼“奇

&1”的結果則必然是1,“偶數&1”的結果則必然是0