把二进制转换为十进制!!

xingxiaojin 2003-01-19 11:45:00
寻求完整答案:〈c++大学教程〉Pag96,T2.30
完整题: 输入只包含0和1的整数(如二进制),并打印其十进制的对应的值,
(提示:用除法求模运算符一次一位从右向左取得这个二进制整数的位,把它打印成十进制,如:1*1+0*2+1*4+1*8= )
-----以前发过关于此问题的贴,但一直未有能运行的解,想请教各位高 手帮我
...全文
51 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingxiaojin 2003-01-22
  • 打赏
  • 举报
回复
chengsion() 的方法正确,能通过,但是我发觉丢了最前面的一位,不知道要怎么处理!
chengsion 2003-01-19
  • 打赏
  • 举报
回复
int main(void){
unsigned int indig=0;
unsigned int result=0;
printf("Please enter the digital(only 0 1).");
scanf("%d",&indig);
while (indig/10!=0){ /* 从右到左分离每一个0或1,*/
/*再转成相应的十 */
/* 制数*/
result=result*2+indig%10;
indig=indig/10;
}
printf("%dB=%dD",intdig,result);
}

本程序的缺点是输入的二进制数受机器字长的限制.你可以将输入的二进制数保存
在一个数组里.关键的一句是result=result*2+indig%10.
solotony 2003-01-19
  • 打赏
  • 举报
回复
unsigned int result=0;
char binary[] = "101010";

int length = strlen(binary);
if(length > 31){
//大于result可保存的值
}
for(int i=length-1;i>=0; i--){
result = binary[i] * (int)pow(2.0,i);
}
printf("%s is %d", binary, result);

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧