1、利用移位>>操作符和与&操作符 直接操作二进制位数
vector<int> GetBinaryOfInte(int n){
vector<int> arr;
for(int i=31;i>=0;i--){
arr.push_back(n>>i&1); //取右移i个二进制位后的二进制值
}
return arr;
}
2、利用移位>>操作符与递归+状态传递
void GetBinaryOfInte(int n,vector<int>& arr){
int a=n%2; //整数对2取余就得到整数的最低二进制位
n>>1; //右移一位 再取余就是倒数第二的二进制位
if(n!=0) GetBinaryOfInte(n,arr);
//至此n==0说明a已经是最高二进制位了
arr.push_back(a);
return ;
}
3、使用递归+状态传递获得16进制表示
void GetHexOfInte(int n, string& str) {
int a = n % 16;
n = (int)(n/16); //对比二进制取商为n>>1;
if (n != 0) GetHexOfInte(n, str);
//至此n==0说明a已经是最高16进制位了
if (a >= 0 && a <= 9) str += ('0' + a);
else if (a >= 10 && a <= 15) str += ('A' + a - 10);
else {
throw("Error");
}
return;
}