在我们日常的编程当中,常常会遇到判断某个整数属于奇数还是偶数的情况。
大家一般的处理做法是用这个整数和2取模。然后判断是等于1还是等于0。
这里,我要为大家介绍一种快速有效的判断做法,利用2进制进行判断。
大家都知道,奇数的最低位一定是1,而偶数的最低位一定是0.所以我们可以根据这个特性,让需要判定的整数和1进行“与”运算,这样就只留下了原数的最低位,然后直接判断这个数等于1还是等于0即可。
实现代码如下:
- class Program
- {
- static void Main(string[] args)
- {
- bool s = OddEven.IsEven(4);
- Console.WriteLine(s);
- s = OddEven.IsOdd(55877554);
- Console.WriteLine(s);
- }
- }
- /// <summary>
- /// 判断一个整数是奇数还是偶数。
- /// </summary>
- class OddEven
- {
- static private int s = 1;
- static public bool IsEven(int a)
- {
- if ((a & s) == 0)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- static public bool IsOdd(int a)
- {
- return !IsEven(a);
- }
- }
另外,
- if ((a & s) == 0)
- {
- return true;
- }
- else
- {
- return false;
- }
return ((a & s) ==0);
呢?这样虽然从性能的角度来看变化不大,但至少可以让程序看上去更简洁精炼,毕竟这种简洁并不会损失可读性呀。
用扩展方法更好,不需要 OddEven 这个类。
- using System;
- namespace IsEven
- {
- class Program
- {
- static void Main(string[] args)
- {
- Console.WriteLine(3.IsEven());
- Console.ReadLine();
- }
- }
- public static class IntExtensions
- {
- public static bool IsEven(this int i)
- {
- return (i & 1) == 0;
- }
- }
- }
转自:http://www.chenjiliang.com/Article/View.aspx?ArticleID=5215&TypeID=34