//进制转化问题详细分析
//八进制化为二进制
void Solution()
{
string s,ans;//定义输入与输出储存
cin>>s;
int len=s.length();
int d=0;//下标
for(int i=0;i<len;i++)
{
switch(s[i])
{
case '0':ans+="000";d+=3;break;
case '1':ans+="001";d+=3;break;
case '2':ans+="010";d+=3;break;
case '3':ans+="011";d+=3;break;
case '4':ans+="100";d+=3;break;
case '5':ans+="101";d+=3;break;
case '6':ans+="110";d+=3;break;
case '7':ans+="111";d+=3;break;
}
}
bool flag=true;//标记开头
for(int i=0;i<d;i++)
{
if(ans[i]=='0'&&flag)
continue;
else
{
cout<<ans[i];flag=false;
}
}
cout<<endl;
}
//二,八进制化为十进制
#define M 2
void Solution()
{
string s;
cin>>s;
int len=s.length();
int sum=0,j=0;
for(int i=len-1;i>=0;i++)
{
sum+=pow(M,j++)*(s[i]-'0');
}
cout<<sum<<endl;
}
//十六进制化为十进制
void Solution()
{
string s;
cin>>s;
int len=s.length();
int sum=0;int d=0;
for(int i=len-1;i>=0;i++)
{
if(s[i]>='0'&&s[i]<='9')
{
sum+=pow(16,d++)*(s[i]-'0');
}
else
sum+=pow(16,d++)*(s[i]-'A');
}
cout<<sum<<endl;
}
//十进制小数转化为二进制小数
#define MAX_SIZE 100
#define eps 1e-8
void solve()
{
double sum,temp;//输入及数据临时储存
cin>>sum;
int zsum,xsum[MAX_SIZE],d=0;//整数与小数储存
zsum=floor(sum);
temp=sum-zsum;
while(fabs(temp-0)>eps)
{
xsum[d++]=floor(temp*2);
temp=temp*2-floor(temp*2);
}
cout<<zsum<<".";
for(int i=0;i<d;i++)
cout<<xsum[i];
cout<<endl;
}
//进制转化问题详细分析
最新推荐文章于 2021-09-08 11:26:45 发布