进制转换——10转2

进制转换

https://www.nowcoder.com/practice/0337e32b1e5543a19fa380e36d9343d7?tpId=40&rp=1&ru=%2Fta%2Fkaoyan&qru=%2Fta%2Fkaoyan%2Fquestion-ranking&gioEnter=menu

#include <iostream>
#include <cstdio>
#include <vector>
#include <string>

using namespace std;

string Divide(string str,int x){        //字符串除法,将十进制str转换为x进制
    int reminder=0;                        //保留余数
    for(int i=0;i<str.size();i++){
        int current=reminder *10 +str[i]-'0';    //数字转为十进制数
        str[i]=current/x+'0';                    //str取出x进制下一位数字
        reminder=current % x;        //得到一轮后x进制的余数
    }
    int pos=0;
    while(str[pos]=='0')        //寻找首个非0的下标
        pos++;
    return str.substr(pos);        //删去前面多余的0
}

int main(){
    string str;
    while(cin>>str){
        vector<int> binary;
        while(str.size()!=0){                            //对一个数进行处理
            int last=str[str.size()-1]-'0';            //str中取出数字最低位,把他变成对应二进制数
            binary.push_back(last %2);
            str=Divide(str,2);
        }
        for(int i=binary.size()-1;i>=0;i--)        //逆序输出得该二进制数
            printf("%d",binary[i]);
        printf("\n");
    }
    return 0;
}
全部评论

相关推荐

Yki_:你要算时间成本呀,研究生两三年,博士三四年,加起来就五六年了,如果你本科去腾讯干五年,多领五年的年薪,加上公司内涨薪,可能到时候十五年总薪资也跟博士差不多
点赞 评论 收藏
分享
每晚夜里独自颤抖:你cet6就cet6,cet4就cet4,你写个cet证书等是什么意思。专业技能快赶上项目行数,你做的这2个项目哪里能提现你有这么多技能呢
点赞 评论 收藏
分享
练习生懒羊羊:开飞机把这个公司创飞吧
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务