二进制十进制转化13_4

二进制十进制转化

#include <bits/stdc++.h>
using namespace std;
const int NUM=10;
int z[40],num;
//p进制数x转化为十进制数y 
//p0在循环中指数增长,1、p、p^2..
//y=a1*p(n-1)+a2*p(n-2)+...+an
int C_To_10(int p,int x){
	int y=0,p0=1;
	while(x!=0){
	y+=(x%10)*p0;//每次取个位数字
	x=x/10;//去掉x的个位
	p0=p0*p;
	} 
	return y;
}
//将十进制数y转化为q进制,结果存放在数组z 
int C_To_2(int y,int q){
	//int z[40];
	num=0;
	do{
		z[num++]=y%q;
		y/=q;
	}while(y!=0);
	return num;
}
int main()
{
	int n,m,p;
	//m进制数 值为n 
	while(cin>>n>>m){
		memset(z,0,NUM);
		if(m==2){
			cout<<C_To_10(m,n)<<endl;
		}
		if(m==10){
			C_To_2(n,2);
			for(int i=num-1;i>=0;i--){
				cout<<z[i];
			}
			cout<<endl;	
		}
	}
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Clark-dj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值