进制转换——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;
}
全部评论

相关推荐

09-15 15:22
东北大学 Java
hys404:你能约个凌晨三点的给我们开开眼吗?不会真的面吧
点赞 评论 收藏
分享
3 收藏 评论
分享
牛客网
牛客企业服务