经常遇到要用到二进制的情况,这里我就记录下
1.逐次经典位操作(返回一个含有二进制数的vector)
#include<iostream>
using namespace std;
#include<vector>
vector<int> Transform(int n)
{
vector<int>m;
for(int i =31; i>=0; i--)
{
m.push_back( ( (n>>i) & 1) );//与1做位操作,前面位数均为0
//cout<<( (n>>i) & 1);//输出二进制
}
//cout<<endl;
return m;
}
举例 若输入10;输出 00000000000000000000000000001010
2.利用递归输出,这里输出的是从1开始的位数,不一定是32位
#include<iostream>
using namespace std;
#include<vector>
//递归输出二进制函数
void BinaryRecursion(int n,vector<int>&ans)
{
int a;
a = n%2;
n = n>>1;
if (n != 0)
BinaryRecursion(n,ans);
//cout<<a;
ans.push_back(a);
}
举例,若输入10,输出1010;