10进制 VS 2进制

进制转换的本质是 除基取余
先将被除数转换为十进制,然后用十进制的数除以所求的进制,保留余数,直到被除数商为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; 
	}
} 
全部评论

相关推荐

01-19 15:14
已编辑
延安大学 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务