c++ 2进制转换10进制

来源:百度知道 编辑:UC知道 时间:2024/05/16 12:39:18
下午求的 10进制转换2进制,
晚上再求2进制换10进制...反过来的程序.希望赐教^_^

给你个代码把 刚没事就给你作个 原理和他们两位说的查不多 稍有出入 自己看吧 已经调通了 环境 vc++6
#include <stdio.h>
#include <math.h>
#include <string.h>
#define max 100
void main()
{
unsigned long s = 0;
int pd = 1, i = 0, kz = 0;
char e[max], *p, *q;
gets(e);
p=e;
q=e;
q--;
while((*p) != '\0')
{
p++;
}
p--;
while( p!=q || pd == 0 )
{
if ((*p)=='0' || (*p)=='1')
{
s=s+((int)*p-48)*(int)pow(2,i);
i++;
}
else
{
pd=1;
kz=1;
}
p--;
}
if(kz==0)
{
printf("转换10进制为%ld\n",s);
}
else
{
if(kz==1)
{
printf("输入不是2进制数 请重新输入!\n");
}
else
{
printf("意外错误!请联系作者!\n");
}
}
}

另:一般不用2进制表示负数 所以为了获得最大的位数用的无符号长整数
没记错的话他应该是32位的也就是能表示0到2^32-1所以