高效奇偶判断计算

问题:

奇偶判断

思路:

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

实现:

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不是基数

 

posted @ 2019-08-30 17:38  凌雨尘  阅读(380)  评论(0编辑  收藏  举报