如何使用C语言编写二进制转换为十进制的程序

如题所述

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

可以通过以下代码解决:

#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的八进制形式。

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

参考资料:

二进制——百度百科

十进制——百度百科

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-08-02
#include <stdio.h>
int main()
{
int Type,a,b[10],i=0,c=0;
printf("请输入转换类型,1:十进制转二进制;2:二进制转十进制\n");
scanf("%d",&Type);
printf("请输入原数据\n");
scanf("%d",&a);
switch(Type)
{
case 1:
while(a!=0)
{
b[i]=a%2;
a/=2;
i++;
}
printf("二进制为:");
i--;
for(;i>=0;i--)
printf("%d",b[i]);
printf("\n");
break;
case 2:
while(a!=0)
{
b[i]=a%10;
a/=10;
i++;
}
i--;
for(;i>=0;i--)
c=c*2+b[i];
printf("十进制为:%d\n",c);
break;
}
}本回答被提问者采纳
第2个回答  2017-08-02

#include<stdio.h>

#include<math.h>

void main()

{

char bit[30];

int i=0,t,s=0;

printf("please input:\n");

scanf("%c",&bit[0]);

while(bit[i]!='\n')

{

i++;

scanf("%c",&bit[i]);

}

for(t=0;i>=0;i--)

{

if(bit[i]>='0'&&bit[i]<='9')

{

s=s+(bit[i]-48)*pow(2,t);

t++;

}

}

printf("%d\n",s);

}

如何使用C语言编写二进制转换为十进制的程序
include <stdio.h>#include <math.h>#include <string.h>\/* 任意进制数转十进制数 *\/\/* char *value : 其他进制数,以字符串形式存储 *\/\/* int *result : 转换后的十进制数 *\/\/* int radix : 待转换的进制 *\/\/* R进制数共n位,第n位表示为Xn。转换后的10进制数表示为Y *\/\/* Y...

如何使用C语言编写二进制转换为十进制的程序
将二进制转成十进制,按权值展开求和即可。可以通过以下代码解决: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*...

c语言把二进制数转换成十进制数的程序怎么写。
1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。2、在test.cpp文件中,输入C语言代码:int a = 0b10000001;printf("%d", a);。3、编译器运行test.cpp文件,此时输入的8位二进制数被成功用十进制进行了输出。

c语言把二进制数转换成十进制数的程序怎么写。
按照如下步骤即可用C语言把二进制数转换成十进制数的程序:1、首先在主函数中设置成函数Sum,另外定义了一个数组array[8],用于存放输入的八位二进制数。2、然后使用了一个for循环语句,用于输入八位二进制数。在scanf函数里,在%d之间加一个1,然后使用printf函数输出,并且调用Sum函数,数组名作为实参。

如何将二进制数转换为十进制数?
C语言程序如下:include<stdio.h> int main(){ int N,i,t;int a[100];scanf("%d",&N);for(i=0;N!=0;i++){ a[i]=N%2;N=N\/2;} for(t=i-1;t>=0;t--){ printf("%d",a[t]);} } 思路:反复地将n除以2取余数;将取出的余数用数组存放;由于先取出的是低位数据,后...

c语言怎么将2进制转化为10进制
include<stdio.h>int Sum(int a[]);int power(int b);int main(){ int array[8],i; printf("输入一个8位二进制数:"); for(i=0;i<8;i++) { scanf("%1d",&array[i]); } printf("转换为十进制数后是:%d\\n",Sum(array)); return 0;}int Sum(int ...

求C语言大佬解答,怎麼写一个二进制和十进制相互转换的程序,要求如下
c;int len = 0, i, j;while (num) { s[len++] = '0' + (num % 2);num >>= 1;} for (i = 0, j = len - 1; i < j; i++, j--) { \/\/ 翻转字符串 c = s[i];s[i] = s[j];s[j] = c;} return s;} 完整代码和运行结果如下:输出符合示例,望采纳~

用C语言分别写出十进制转二进制,二进制转十进制的详细程序
二进制转化为十进制 include<stdio.h> include<string.h> int main(){ char a[33];int i, num = 0;scanf("%s", a);for(i=strlen(a)-1; i>=0; i--){ num*=2; \/*如果用位运算的话,速度会更快*\/ num+=a[i]-'0';} printf("%d\\n", num);return 0;} 十进制转化为二...

怎样用C语言将二进制数转换成十进制
for(--n,i=n;i=0;i--)rt|=(s[i]-48)<<n-i;returnrt;}intmain(intargc,char*argv[]){printf(%ld,btd(11011));\/*示例,输出11011B的十进制形式*\/return0;}\/\/---

C语言 怎样将二进制数转换成十进制,又怎样将十进制数转换成二进制数输出...
将十进制数转换成二进制数,采用的原理就是辗转除2,逆向输出余数。(windows系统下的itoa函数也是一个不错的选择,但DIY更有意义)实现方法:include <stdio.h> void swap( char *a, char *b ){ char t=*a;a=*b;b=t;} char *reverse(char *s,int len){ char *b=s, *e=s+len-1...

相似回答