//进制转化问题详细分析

//进制转化问题详细分析

//八进制化为二进制
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;

}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值