【上机训练】数学问题

数学问题

进制转换

  1. 二进制数

    题目描述:

    大家都知道,数据在计算机里中存储是以二进制的形式存储的。 有一天,小明学了C语言之后,他想知道一个类型为unsigned int 类型的数字,存储在计算机中的二进制串是什么样子的。 你能帮帮小明吗?并且,小明不想要二进制串中前面的没有意义的0串,即要去掉前导0。

    输入

    多行,每一行表示要求的数字

    输出

    输出共T行。每行输出求得的二进制串。

    样例输入

    23
    535
    2624
    56275
    989835

    样例输出

    10111
    1000010111
    101001000000
    1101101111010011
    11110001101010001011

    解法思路

    代码

    1. 十进制→二进制
#include <bits/stdc++.h>

using namespace std;

void Convert(int n){
    
    
    vector<int> answer;
    while(n!=0){
    
    
        answer.push_back(n%2);
        n/=2;
    }
    for(int i=answer.size()-1;i>=0;--i){
    
    
        printf("%d",answer[i]);
    }
    printf("\n");
}

int main(){
    
    
    int n;
    while(scanf("%d",&n)!=EOF){
    
    
        Convert(n);
    }

    return 0;
}

通用

#include <bits/stdc++.h>

using namespace std;

char IntToChar(int target){
    
    
    if(target<10){
    
    
        return target+'0';
    }else{
    
    
        return target-10 +'A';
    }
}

void Convert(int n,int x){
    
    
    
    vector<char> answer;
    
    if(n==0){
    
    
        answer.push_back('0');
    }
    while(n!=0){
    
    
        answer.push_back(IntToChar(n%x));
        n/=x;
    }
    for(int i=answer.size()-1;i>=0;--i){
    
    
        printf("%c",answer[i]);
    }
    printf("\n");
}

int main(){
    
    
    int n;
    int x;
    while(scanf("%d",&n)!=EOF){
    
    
        
        scanf("%d",&x);
        Convert(n,x);
    }

    return 0;
}

猜你喜欢

转载自blog.csdn.net/Qmilumilu/article/details/115105831
今日推荐