//十进制转化为二进制voidSwitch(float a){int b =int(a *100)%100;int v =(a *100- b)/100;//v为整数部分float w = b *1.0/100;//w为小数部分//整数部分化为二进制int p;
SqStack S;initStack(S);while(v >0){
p = v %2;
v /=2;Push(S,p);}//小数部分化为二进制(保留4位)int q[4],n =0;for(int i =0; i <4; i++){
w *=2;if(w >1){
q[i]=1;
w -=1;}elseif(w ==1){
q[i]=1;break;}else
q[i]=0;
n++;}//输出结果while(!isEmpty(S)){Pop(S,p);
cout << p;}
cout <<".";for(int i =0; i <= n; i++)
cout << q[i];}//二进制化十进制voidSwitch1(char*str){char*p = str;while(*p !='\0'){if(*p =='1'||*p =='0'||*p =='.')
p++;else{
cout <<"请输入正确的二进制数"<< endl;return;}}char*begin = str,*end = str;//p记录小数点的位置while(*end !='\0'&&*end !='.')
end++;
p = end;
end--;//end指向整数部分最后一位int i =0;float a =0;//指数while(begin != end){if(*end =='1')
a +=pow(2*1.0,i);
i++;
end--;}
a +=pow(2*1.0,i);
begin = end = p +1;while(*end !='\0')
end++;
end--;//end指向小数部分最后一位float b =0; i =-1;while(begin != end){if(*begin =='1')
b +=pow(2*1.0,i);
i--;
begin++;}
b +=pow(2*1.0,i);
cout << a + b;}