【C#】整数奇偶判断方法及效率-阿里云开发者社区

开发者社区> 阿里云MVP> 正文

【C#】整数奇偶判断方法及效率

简介: 简单的对在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);

我以为按位与的结果要高于取模运行。结果出乎我的意料!
看结果:
2020-03-26_113226.png
所以还是要以实际结果为证。
测试代码如下:

            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());

版权声明:本文中所有内容均属于阿里云开发者社区所有,任何媒体、网站或个人未经阿里云开发者社区协议授权不得转载、链接、转贴或以其他方式复制发布/发表。申请授权请邮件developerteam@list.alibaba-inc.com,已获得阿里云开发者社区协议授权的媒体、网站,在转载使用时必须注明"稿件来源:阿里云开发者社区,原文作者姓名",违者本社区将依法追究责任。 如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:developer2020@service.aliyun.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
+ 订阅

阿里云最有价值专家,是专注于帮助他人充分了解和使用阿里云技术的意见领袖。

官方博客
官网链接
精彩专题