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

2024-12-01 04:16:02
推荐回答(4个)
回答1:

开始定义的i是for循环中的循环节,作为判断条件使用;
cin的操作在for循环中已经进行了8次了

回答2:

开头定义的 i 和for里面的 i 是一样的
cin的操作已经循环八次了呀,因为它在for循环里,for(i=7;i>=0;i--)一共循环8次

回答3:

/*
首先要知道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); //返回计算结果
}

回答4:

两个i一样,cin的循环了8次啊