问题:
奇偶判断
思路:
使用 & 进行奇偶判断,比直接使用 % 高效很多
实现:
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不是基数