【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());
目录
相关文章
|
1月前
|
C#
C# DEV TextEdit 设置文本框只能输入数字(整数)
C# DEV TextEdit 设置文本框只能输入数字(整数)
|
2月前
|
Java 调度 C#
C#学习系列相关之多线程(一)----常用多线程方法总结
C#学习系列相关之多线程(一)----常用多线程方法总结
|
2月前
|
C#
C#学习相关系列之数组---常用方法使用(二)
C#学习相关系列之数组---常用方法使用(二)
|
2月前
|
存储 C# 数据库
C# 生成唯一ID,有哪些方法?
【2月更文挑战第12天】
203 0
|
4月前
|
编译器 C# 开发者
C# 11.0中的新特性:覆盖默认接口方法
C# 11.0进一步增强了接口的灵活性,引入了覆盖默认接口方法的能力。这一新特性允许类在实现接口时,不仅可以提供接口中未实现的方法的具体实现,还可以覆盖接口中定义的默认方法实现。本文将详细介绍C# 11.0中接口默认方法覆盖的工作原理、使用场景及其对现有代码的影响,帮助开发者更好地理解和应用这一新功能。
|
1天前
|
程序员 C#
C#抽象类和抽象方法详解
C#抽象类和抽象方法详解
6 0
|
1天前
|
存储 开发框架 .NET
C#中将DataTable转化成ListT的方法解析
C#中将DataTable转化成ListT的方法解析
3 0
|
2天前
|
数据采集 前端开发 数据挖掘
Fizzler库+C#:从微博抓取热点的最简单方法
本文介绍如何使用Fizzler库和C#构建微博热点信息爬虫。通过Fizzler的CSS选择器定位关键信息,提取热点标题和排名,实现微博内容的智能挖掘。示例代码展示单线程和多线程采集方法,并涉及代理IP使用。
Fizzler库+C#:从微博抓取热点的最简单方法
|
3天前
|
存储 数据采集 API
C# GetField 方法应用实例
C# GetField 方法应用实例
|
3天前
|
JSON 安全 API
C# GetMethod 方法应用实例
C# GetMethod 方法应用实例