怎样用C语言将二进制数转换成十进制

如题所述

第1个回答  2022-12-14

将二进制转成十进制,按权值展开求和即可。

可以通过以下代码解决:

#include <stdio.h>

#include <stdlib.h>

int main()

{

char a[17];

gets(a);

int len,i,sum=0,m,j;

len=strlen(a);

if(len<=16)

{

for(i=0;i<len;i++)

{

m=1;

if(a[i]=='1')

{

for(j=1;j<=len-i-1;j++)

m*=2;

sum+=m;

}

}

printf("%d",sum);

}

return 0;

}

扩展资料

我们常用的进制包括:二进制、八进制、十进制与十六进制,它们之间区别在于数运算时是逢几进一位。比如二进制是逢2进一位,十进制也就是我们常用的0-9是逢10进一位。

十进制转二进制:十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止。

八进制转二进制:八进制数通过除2取余法,得到二进制数,对每个八进制为3个二进制,不足时在最左边补零。

十六进制转二进制:十六进制数通过除2取余法,得到二进制数,对每个十六进制为4个二进制,不足时在最左边补零。

负数的进制转换稍微有些不同。

先把负数写为其补码形式(在此不议),然后再根据二进制转换其它进制的方法进行。

例:要求把-9转换为八进制形式。则有:

-9的补码为1111 1111 1111 0111。从后往前三位一划,不足三位的加0

111---->7

110---->6

111---->7

111---->7

111---->7

001---->1

然后我们将结果按从下往上的顺序书写就是:177767,那么177767就是十进制数-9的八进制形式。

其实转化成任意进制都是一样的。

参考资料:

二进制——百度百科

十进制——百度百科

相似回答
大家正在搜