进制转换的本质是 除基取余
先将被除数转换为十进制,然后用十进制的数除以所求的进制,保留余数,直到被除数商为0
8 >> 1000 >> 0001 执行一遍内层循环后a[i]取值全为0,b=1 直接退出
#include<bits/stdc++.h>
using namespace std;
string conversion(int m, string a, int n){
int l = a.size(), r, t;
string b;
for(int i=0;i<l;){
r = 0;
for(int j=i; j< l;j++){
t = (a[j] - '0' + r*m) % n;
a[j] = (a[j] - '0' + r*m) / n + '0';
r = t;
}
b +=char(r + '0');
while(a[i] == '0') i++;
}
return b;
}
int main(){
string a, b;
while(cin>>a){
b = conversion(10, a, 2); //十进制转换为二进制
a = conversion(2, b, 10); //二进制转换为十进制
reverse(a.begin(), a.end());
cout<<a<<endl;
}
}