输入一个8位二进制数,将其转换为十进制数输出。
在程序中如果cin输入的是01101001,那么ch=01101001,为什么if (ch == ‘1’) 怎么会执行,ch == ‘1’?
程序是:#include <iostream>
using namespace std;
double power (double x, int n);
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));
}
cout <<"Decimal value is "<<value<<endl;
}
double power (double x, int n)
{
double val = 1.0;
while (n--) val *= x;
return(val);
}
在程序中如果cin输入的是01101001,那么ch=01101001,为什么if (ch == ‘1’) 怎么会执行,ch == ‘1’?
程序是:#include <iostream>
using namespace std;
double power (double x, int n);
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));
}
cout <<"Decimal value is "<<value<<endl;
}
double power (double x, int n)
{
double val = 1.0;
while (n--) val *= x;
return(val);
}
OS在把字符串01101001赋给ch时,取的是第一个字符就是0
在你没重载cin的>>的操作符时,VC是不会把你的输入当做二进制的
在你没重载cin的>>的操作符时,VC是不会把你的输入当做二进制的
额 是我错啦
那系统在什么时候将1字符赋给ch,if语句怎么能执行。
{
cin >> ch;
if (ch == ‘1’)
value += int(power(2,i));
}
这是个循环,需要把字符串01101001分成八次输入,每次输入一个字符,当你输入的字符是1的时候,就会执行了
OS将你一次输入的字符串放在cin的缓冲区,然后循环八次赋值给ch的