编程 c语言二进制怎么转化为十进制?
6个回答
展开全部
int fun(int j);
void main()
{
int i;
char Binary[100];
cout << "请输入要转化为10进制的2进制数" << endl;
cin >> Binary;
char * p = Binary;
i = strlen(Binary) - 1;
int Dec = 0;
int j = 0;
while (i >= 0)
{
Dec = Dec + (*(p + i) - 48 )* fun(j);
j++;
i--;
}
cout << Dec << endl;
}
int fun(int j)
{
int JI = 1;
for(int i = 0; i < j; i++)
{
JI = JI * 2;
}
return JI;
}
这个是比较简单易懂的函数,看看吧。当然可以用另一种方法,就是新手会比较容易晕。
void main()
{
int i;
char Binary[100];
cout << "请输入要转化为10进制的2进制数" << endl;
cin >> Binary;
char * p = Binary;
i = strlen(Binary) - 1;
int Dec = 0;
int j = 0;
while (i >= 0)
{
Dec = Dec + (*(p + i) - 48 )* fun(j);
j++;
i--;
}
cout << Dec << endl;
}
int fun(int j)
{
int JI = 1;
for(int i = 0; i < j; i++)
{
JI = JI * 2;
}
return JI;
}
这个是比较简单易懂的函数,看看吧。当然可以用另一种方法,就是新手会比较容易晕。
追问
错的离谱……
追答
孩子,程序测试过了,我忘了写了一个c++的代码,你把你的头文件加上,然后把里面的cin和cout换成scanf()和prinft函数。二进制是以字符串形式输入,一般人都这么做!
展开全部
举个例子吧 例如二进制数1110 0101 那么转化为十进制为多少呢?答案为229.
怎么算的呢? 将每为的数乘以2的n-1次方再相加,n为第几位;1+0+4+0+0+32+64+128=229
怎么算的呢? 将每为的数乘以2的n-1次方再相加,n为第几位;1+0+4+0+0+32+64+128=229
追问
程序是什么?
追答
写简单点 假定你输入的二进制就是8位 不考虑其他因素.我们输入是以十进制输入0和1;
#include
void main()
{
int a[8];
int i,sum;
for(i=0;i<8;i++)
{
scanf("d%",&a[i]);/输入0或1
}
for(i=0;i<8;i++)
{
if(i==0)
sum=1*a[0];
else
{
sum=sum+sum*2*a[i];
}
}
printf("d&",sum);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
VC环境下用C++实现
#include<iostream>
using namespace std;
void main()
{
int obj;
cout<<"输入二进制数:"<<endl;
cin>>obj;
int x=0,y;
int n=1;
while(obj!=0)
{
y=obj%10;
x+=y*n;
n=n*2;
obj=obj/10;
}
cout<<"转换成的十进制数:"<<endl;
cout<<x<<endl;
}
#include<iostream>
using namespace std;
void main()
{
int obj;
cout<<"输入二进制数:"<<endl;
cin>>obj;
int x=0,y;
int n=1;
while(obj!=0)
{
y=obj%10;
x+=y*n;
n=n*2;
obj=obj/10;
}
cout<<"转换成的十进制数:"<<endl;
cout<<x<<endl;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先判断输入的是不是一个合法的二进制数,个人觉得输入用字符型输入,再将其强制转化为数值型计算,程序不难
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-08-14 · 知道合伙人软件行家
关注
展开全部
#include<math.h>
#include<string.h>
#include<stdio.h>
int BinToDec(char *bin)
{
int dec= 0;
int n= strlen(bin)-1, i=0;
for(; n >= 0; n--, i++)
dec+= (bin[i]-48) * pow(2, n);
return dec;
}
void main()
{
char b[20]= "11001100";
int d= BinToDec(b);
printf("%d\n", d);
}
#include<string.h>
#include<stdio.h>
int BinToDec(char *bin)
{
int dec= 0;
int n= strlen(bin)-1, i=0;
for(; n >= 0; n--, i++)
dec+= (bin[i]-48) * pow(2, n);
return dec;
}
void main()
{
char b[20]= "11001100";
int d= BinToDec(b);
printf("%d\n", d);
}
更多追问追答
追问
遗憾,错了,啊,大神,我的作业怎么办
追答
哪错了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询