进制转换
-
二进制数
题目描述:
大家都知道,数据在计算机里中存储是以二进制的形式存储的。 有一天,小明学了C语言之后,他想知道一个类型为unsigned int 类型的数字,存储在计算机中的二进制串是什么样子的。 你能帮帮小明吗?并且,小明不想要二进制串中前面的没有意义的0串,即要去掉前导0。
输入
多行,每一行表示要求的数字
输出
输出共T行。每行输出求得的二进制串。
样例输入
23
535
2624
56275
989835样例输出
10111
1000010111
101001000000
1101101111010011
11110001101010001011解法思路
代码
- 十进制→二进制
#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;
}