例题:输入8位二进制位,转换成十进制并输出结果。
#include <iostream>
using namespace std;
double pow(double x,int y);
int main(){
int i;
char n;
double s=0;
cout<<"please enter an 8 bit binary number:";
for(i=7;i>=0;i--){
cin>>n; //同时输入一串数字,每个数字分别读取,就把数字当成字符用char
if(n=='1'){ //char类型变量只能存放一个字符
s=s+pow(2,i);
}
}
cout<<"decimal value is "<<s;
}
double pow(double x,int y){
double val;
val=1.0;
while(y!=0){
val=val*x;
y--;
}
return val;
}
当输入10101101的时候,第一次做if判断时n=1,第二次判断时n=0,第三次判断时n=1,以此类推。。。
虽然输入n时是以一串字符输入,但是char类型的n值只存放第一个输入字符。
当再次执行到cin>>n;时,会将还未读取的第二个字符作为输入值赋给n,你输入了8位,那么就会依次将这8位挨个儿读取完为止。