如何高效地判斷奇數和偶數
阿新 • • 發佈:2019-01-08
在我們日常的程式設計當中,常常會遇到判斷某個整數屬於奇數還是偶數的情況。
大家一般的處理做法是用這個整數和2取模。然後判斷是等於1還是等於0。
這裡,我要為大家介紹一種快速有效的判斷做法,利用2進位制進行判斷。
大家都知道,奇數的最低位一定是1,而偶數的最低位一定是0.所以我們可以根據這個特性,讓需要判定的整數和1進行“與”運算,這樣就只留下了原數的最低位,然後直接判斷這個數等於1還是等於0即可。
實現程式碼如下:
- class Program
- {
- staticvoid Main(string[] args)
- {
- bool s = OddEven.IsEven(4);
- Console.WriteLine(s);
- s = OddEven.IsOdd(55877554);
- Console.WriteLine(s);
- }
- }
- /// <summary>
- /// 判斷一個整數是奇數還是偶數。
- /// </summary>
- class OddEven
- {
- staticprivateint s = 1;
- staticpublicbool IsEven(int a)
- {
- if ((a & s) == 0)
- {
- returntrue;
- }
- else
- {
- returnfalse;
- }
- }
- staticpublicbool IsOdd(int a)
- {
- return !IsEven(a);
- }
- }
另外,
- if ((a & s) == 0)
- {
- returntrue;
- }
- else
- {
- returnfalse;
- }
return ((a & s) ==0);
呢?這樣雖然從效能的角度來看變化不大,但至少可以讓程式看上去更簡潔精煉,畢竟這種簡潔並不會損失可讀性呀。
用擴充套件方法更好,不需要 OddEven 這個類。
- using
- namespace IsEven
- {
- class Program
- {
- staticvoid Main(string[] args)
- {
- Console.WriteLine(3.IsEven());
- Console.ReadLine();
- }
- }
- publicstaticclass IntExtensions
- {
- publicstaticbool IsEven(thisint i)
- {
- return (i & 1) == 0;
- }
- }
- }