高效奇偶判断计算

Posted 凌雨尘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高效奇偶判断计算相关的知识,希望对你有一定的参考价值。

问题:

奇偶判断

思路:

使用 & 进行奇偶判断,比直接使用 % 高效很多

实现:

C++:

#include <iostream>
#include <string>
#include <cstdio>
#include <sstream>
#include <vector>

using namespace std;

bool isOdd(int i){
    return (i & 1)!=0;
}

int main(){
    
    
    for(int i =0;i<6;i++){
        cout<<"i = "<<i<<" ,isOdd = "<<isOdd(i)<<endl;
    }
    
    return 0;
}

输出:

i = 0 ,isOdd = 0
i = 1 ,isOdd = 1
i = 2 ,isOdd = 0
i = 3 ,isOdd = 1
i = 4 ,isOdd = 0
i = 5 ,isOdd = 1

分析:

先了解下位运算符 & ,两个数用 & 进行位运算,本质上就是两个数的2进制运算,在运算过程中,只有 1 & 1 的结果是1,其他结果都是 0,如图:

 

 

1的2进制是 0000 0001,任何数与 1 进行 & 运算,本质上是它的2进制的数最后一位与1的计算

eg1:

2的2进制是: 0000 0010
                   ^
1的2进制是: 0000 0001
                   ^
运算结果    0000 0000

0 & 1 = 0,得出2不是基数

 

eg2:

3的2进制是: 0000 0011
                   ^
1的2进制是: 0000 0001
                   ^
运算结果    0000 0001

1 & 1 = 0,得出3不是基数

 

以上是关于高效奇偶判断计算的主要内容,如果未能解决你的问题,请参考以下文章

校验一个奇偶数最高效的方式:按位与&

位运算:判断奇偶数

奇偶数判断

c语言如何判断奇偶数?

编写一个程序,判断任意输入的整数的奇偶性。

奇偶数判断