天天看點

【C#】整數奇偶判斷方法及效率

在各種程式設計語言中,可能會涉及到整型數的奇偶判斷問題。各種程式設計語言的整型資料類型各一,以C#為例,整型有byte,short(ushort為無符号型,後續類型類推),int,long等類型。

我們知道,能被2整除是偶,否則是奇。是以判斷的方法有2,第一種是用被判斷的資料與1按位與,如果結果是1,則是奇,否則為偶。

第二種是用被判斷的資料除以2,餘數為1則為奇,否則為偶(整除取餘運作叫取模)。

以C#為例,假設要判斷的資料為v,則第一種方式的代碼為

bool isOdd = ((v & 1) == 1);           

第二種方式的代碼為

bool isOdd = ((v % 1) == 1);           

我以為按位與的結果要高于取模運作。結果出乎我的意料!

看結果:

【C#】整數奇偶判斷方法及效率

是以還是要以實際結果為證。

測試代碼如下:

Stopwatch sw = new Stopwatch();
            StringBuilder sb = new StringBuilder();
            int count = 10000000;
            sw.Start();
            for(int i = 0; i < count; i++)
            {
                bool a = ((i & 1) ==1);
            }
            sw.Stop();
            sb.Append("按位與用時:").Append(sw.Elapsed.TotalMilliseconds);
            sw.Restart();
            for (int i = 0; i < count; i++)
            {
                bool a = ((i % 1) == 1);
            }
            sw.Stop();

            sb.Append("取餘用時:").Append(sw.Elapsed.TotalMilliseconds);
            MessageBox.Show(sb.ToString());           

繼續閱讀