一个8位二进制数,将其转换为十进制数输出的C++问题求解。。。

2024-11-29 11:13:48
推荐回答(5个)
回答1:

/*
首先要知道2转10进制的规则:
该位数值(1或0)乘以二的该位位数位数减一次方
比如:二进制10,转10进制则是1*2^1+0*2^0
二进制110,转10进制则是1*2^2+1*2^1+0*2^0
……
这个程序中的power函数作用就是用于计算次方
解释下power函数:
power(double x,int n);
比如2的3次方,则power(2,3)返回2的3次方的值

有了这个函数的话,计算2进制转10进制就非常简单了
只需要判断8位数中的哪一位是1,是1的话就加上2的位数-1次方就可以了
比如8位二进制是11000111
则十进制value=power(2,7)+power(2,6)+power(2,2)+power(2,1)+power(2,0);
这个步骤可以用循环得到
很简单吧
*/
#include
using namespace std;
double power(double x,int ); //声明power函数,因为power的定义在main之后,main函数要调用的话就必须先声明
void main(void)
{
int i; //用作循环的计数器
int value=0; //结果,也就是得出的十进制
char ch; //一位二进制的值
cout<<"Enter an 8 bit binary number "; //输入提示
for(i=7;i>=0;i--) //此循环完成8位二进制的输入和累加出10进制的结果
{
//输入第i位,因为i是从7开始循环,并且i--,直到0为止,所以第一次是输入二进制的第8位(i=7),以此第7位(i=6)……
cin>>ch;
if(ch=='1') //判断该位是否为1,如果为1,就用power函数计算出2^i,并累加结果
value+=int(power(2,i));
}
//输出结果
cout<<"Decimal calue is "<}
double power(double x,int n)
{
double val=1.0; //计算累乘结果
while(n--) //循环n次,每次都*x,从而达到次方的计算
val*=x; //累乘
return(val); //返回计算结果
}

回答2:

#include //C++头文件
using namespace std; //需要的名字空间,像本程序中的cout,cin
double power(double x,int ); //声明数制转换的函数
void main(void)
{
int i; //声明变量
int value=0;
char ch;
cout<<"Enter an 8 bit binary number "; //输出到屏幕显示提示字符
for(i=7;i>=0;i--) //对输入的8位数做转换
{
cin>>ch; //获取输入
if(ch=='1') //如果输入为1
value+=int(power(2,i)); //将value值加上转换后的数值,有强制类型转换,双精度转换成整型
}
cout<<"Decimal calue is "<}
double power(double x,int n) //定义函数
{
double val=1.0; //定义变量
while(n--) //用while循环判断当前位(参考2进制转10进制公式) val*=x; //在对应第n位*2^(n-1)

return(val); //返回双精度值
}

前提是知道2进制转10进制的公式:只需要明白第n位数*2^(n-1)即可。如00001000可以换成0*2^7+0*2^6+0*2^5+0*2^4+1*2^3+0*2^2+0*2^1+0*2^0=8。
比较难理解的是power函数里面的while循环和main里面for循环,只要明白公式,对应看代码,将具体数制替换变量就比较容易明白。

回答3:

二进制转十进制的方法就是按权展开
比如
11111111b=1*2^0+1*2^1+1*2^2+1*2^3+1*2^4+1*2^5+1*2^6+1*2^7
=1+2+4+8+16+32+64+128
=255d
power(double x,int n)函数就是用来算x^n的值的

回答4:

#include
using namespace std;

double power(double x,int );//函数声明

int main()
{
int i;
int value=0;//十进制结果
char ch;
cout<<"Enter an 8 bit binary number ";
for(i=7;i>=0;i--)//每输入一位就按其权值加到十进制结果上
{
cin>>ch;
if(ch=='1')
value+=int(power(2,i));//加上2的i次方
}
cout<<"Decimal calue is "< return 0;
}

double power(double x,int n)//算出x的n次方的值
{
double val=1.0;
while(n--)//n个x累乘,算出x的n次方
val*=x;
return(val);
}
不知你看懂了没,这是很简单的代码。要给分啊。

回答5:

#include
using namespace std;
double power(double x,int );
void main(void)//c++中()中是不用void的,如果不返回空着就可以了
{
int i;
int value=0;
char ch;
cout<<"Enter an 8 bit binary number ";
for(i=7;i>=0;i--)
{
cin>>ch;
if(ch=='1')
value+=int(power(2,i));
}
cout<<"Decimal calue is "<}
double power(double x,int n)
{
double val=1.0;
while(n--)//while循环是一个求2的n 次幂
val*=x;
return(val);//return val;就可以了,val是一个变量不是函数
}

这个函数不能实现将二进制转换成十进制