C语言 怎样将二进制数转换成十进制,又怎样将十进制数转换成二进制数输出? 15

如题,求大神指教,谢谢.... 如题,求大神指教,谢谢. 展开
 我来答
kaixingui2012
2015-09-25 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:7762万
展开全部

将二进制数转换成十进制,一般是从字符串转换成一个整数,按位值乘以权值相累加得到结果。

如:1010=1*2^3+0*2^2+1*2+0 =((((1*2)+0)*2)+1)*2+0

将十进制数转换成二进制数,采用的原理就是辗转除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;
while( b<e )
{
swap(b++,e--);
}
return s;
}
char *dec2bin(n)
{
static char str[33];
int i=0;
do {
str[i++]=n%2+'0';
n/=2;
}while( n );
str[i]=0;
return reverse(str,i);
}
int bin2dec(char *s)
{
int i,n=0;
for( i=0;s[i];i++ )
n=n*2+s[i]-'0';
return n;
}
void main()
{
int n=100;
char *p;
p=dec2bin(n);
printf("%d(D)=%s(B)\n", n, p );
n=bin2dec(p);
printf("%s(B)=%d(D)\n", p, n );
}

运行结果:

100(D)=1100100(B)

1100100(B)=100(D)

香草炸鸡块
2014-03-24
知道答主
回答量:49
采纳率:0%
帮助的人:29万
展开全部
在计算机中,数字都是以二进制形式保存的,无所谓转换不转换的,输出的时候只要改变输出格式即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
在宝安15
2014-03-24 · TA获得超过448个赞
知道小有建树答主
回答量:860
采纳率:100%
帮助的人:435万
展开全部
数学理论:
十进制转二进制:
用2辗转相除至结果为1
将余数和最后的1从下向上倒序写 就是结果
例如302
302/2 = 151 余0
151/2 = 75 余1
75/2 = 37 余1
37/2 = 18 余1
18/2 = 9 余0
9/2 = 4 余1
4/2 = 2 余0
2/2 = 1 余0
故二进制为100101110

下面是十进制转二进制的代码

#include
int main(void)
{
int i,m,n;
int cs[20];
int ys[20];
while(scanf("%d",&n)!=EOF)
{
cs[0]=n;
if(cs[0]==0) printf("\n");
else
{
i=0;
while(cs[i]!=0)
{
i++;
cs[i]=cs[i-1]/2;
ys[i]=cs[i-1]%2;
}
m=i;
for(i=m;i>0;i--)
printf("%d",ys[i]);
printf("\n");
}

}
return 0;
}

希望能帮助到你。并且楼上说的改变输出格式是错的,C语言只能通过%d %f %c %o %u %x 来输出,也就是说改变输出格式只能输出十进制数,八进制数和十六进制数。
追问
那二进制如何转换成十进制?
追答
你这么伸手要题目,是学不好代码的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式