您的位置:首页 > 编程语言 > C语言/C++

二进制 与十进制 互相转换

2017-08-22 15:28 204 查看
#include<stdio.h>
#include<string.h>
#define maxn 1000
int getdigits(int n)//获取数字位数
{
int cnt = 0;
while(n != 0){
n = n/10;
cnt++;
}
return cnt;
}
int to_decim1(int n)//整数转换为 十进制
{
int cnt = getdigits(n);
int v = 0;
int m;
while(cnt--){
m = 1;
for(int i = 0; i < cnt; i++)
m *= 10;
v = v*2 + n/m;
n = n%m;
}
return v;
}

int to_decim2(char *a)//字符串中的二进制字符转换为十进制
{
int sum = 0;
int j = 1;
int len = strlen(a); (1)方法1  逆序 加
//		for(int i = len-1; i >= 0; i--){
//			sum += j*(a[i]-'0');
//			j *= 2;
//		}
int v = 0;(2)方法2 顺序 加
int i = 0;
while(len--){
v = v*2 + a[i++]-'0';
}

return v;
}

void to_binary(int n) //十进制转换为二进制
{
if(n == 1 || n == 0){
printf("%d",n);
return ;
}
to_binary(n/2);
printf("%d",n%2);	//递归逆序输出
}

int main()
{
char a[maxn];
printf("\n输入要转换的二进制数:\n");
int n, m;
scanf("%d",&n);
printf("%d 的十进制为\t%d\n",n, to_decim1(n));
printf("请输入二进制字符:\n");
scanf("%s",a);
int rel2 = to_decim2(a);
printf("%s 的十进制为\t%d\n",a, rel2);
printf("请输入要转换为二进制的数:\n");
scanf("%d",&m);
printf("%d 的二进制为:\t",m);
to_binary(m);
return 0;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息