题目描述
将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。
解题思路
众所周知,我们在进行进制转换的时候是将某个数与进制做除法,其余数为应该添加到最低位的值。假如十进制数123要转化成二进制:
123/2 我们得到61和余数1 ,所以我们得到的1就应该放在最低位
这时我们再把61/2,....以此类推知道被除数为0的时候就计算完成
string converse(int d,string str,int b) { int k,t; string res=""; for(int i=0;i<str.size();) { k = 0;//高位向低位的进位 for(int j=i;j<str.size();j++) { //当前位的商,当前位的余数 t= (k*d+str[j]-'0')%b; str[j] =(k*d+str[j]-'0')/b+'0'; k=t; } res+=to_string(k); while(str[i] == '0') i++; } reverse(res.begin(),res.end()); return res; }