关于进制转换,c++有话要说~

标准输入输出真奇怪,我貌似明白了为什么之前学姐会说格式控制符不会四舍五入了

 

 和c++一样丢精度????

这里先将进制转换吧

进制用自带的只能在8 10 16之间转

下面是用栈写的二进制转化 

 博客

进制转换 (两种方式,一个获得正序,一个获得逆序)

#include <iostream>
#include <iomanip>
#include<cstdio>
#include<cmath>
#include<stack>
using namespace std;

typedef unsigned long long ull;

const ull MOD=0x3f3f3f3f3f;
const double PI=3.1415926;

string transfer(int a)
{
    if(a==0)
        cout<<"0"<<endl;
    string temp="";
    stack<char>mystack;
    while(a>0)
    {
        if(a%2)
        {
            mystack.push('1');
            temp+="1";
        }
        else
        {
            mystack.push('0');
            temp+="0";
        }
        a/=2;
    }
    while(!mystack.empty())
    {
        cout<<mystack.top();
        mystack.pop();
    }
    cout<<endl;
    return temp;
}
int main()
{
    int a;
    cin>>a;
    //十进制转二进制
    string temp;
    temp=transfer(a);
    for(int i=temp.length()-1;i>=0;i--)
        cout<<temp[i];

    return 0;
}

进制输入输出(cin  和cout的进制设置是分开的由于fixed只是cout才有,这一特性昨天没发现)

记住那几个进制表示词(这里首字母小写,并且缩写了一些)

oct八进制
dec十进制
hex十六进制

演示代码 

#include <iostream>
#include <iomanip>
#include<cstdio>
#include<cmath>
#include<stack>
using namespace std;

typedef unsigned long long ull;

const ull MOD=0x3f3f3f3f3f;
const double PI=3.1415926;

int main()
{
    int a;
    while(cin>>dec>>a)
    {
        int f=0;
        if(a<0)
        {
            cout<<"-";
            a=-a;
            f=1;
        }
        cout<<a<<" = "<<oct;
        if(f)
            cout<<"-";
        cout<<a<<"(8)"<<" = "<<hex;
        if(f)
            cout<<"-";
        cout<<a<<"(16)"<<dec<<endl;
    }
    return 0;
}

tips:如果是在2   8   16之间转化,

可以利用其关系(取3位或四位)快速解决

时间快,但是有2 8 10的条件而且代码也难写T^T

补码之类的概念有时间再补上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值