题目描述
大家都知道,数据在计算机里中存储是以二进制的形式存储的。 有一天,小明学了C语言之后,他想知道一个类型为unsigned int 类型的数字,存储在计算机中的二进制串是什么样子的。 你能帮帮小明吗?并且,小明不想要二进制串中前面的没有意义的0串,即要去掉前导0。
输入描述:
多行,每一行表示要求的数字
输出描述:
输出共T行。每行输出求得的二进制串。
示例1
输入
23
535
2624
56275
989835
输出
10111
1000010111
101001000000
1101101111010011
11110001101010001011
代码:
#include <iostream>
#include<vector>
using namespace std;
int convert_sum(int n){//要转换为x进制,只需要将这个函数里面的2换为x即可(x<10)。
vector<int>v;
int s;
while(n!=0){
s=n%2;
v.push_back(s);
n=n/2;
}
for(int i=v.size()-1;i>=0;i--){
printf("%d",v[i]);
}
printf("\n")
}
int main()
{int sum;
while(cin>>sum){
convert_sum(sum);
}
return 0;
}
如果要转换为十六进制,代码如下:
#include <iostream>
#include<vector>
using namespace std;
char numtochar(int num){
if(num<10){
return num+'0';
}
else{
return 'A'+num-10;
}
}
int convert_sum(int n){
vector<char>v;
int s;
while(n!=0){
s=n%16;
v.push_back(numtochar(s));
n=n/16;
}
for(int i=v.size()-1;i>=0;i--){
printf("%c",v[i]);
}
printf("\n");
}
int main()
{int sum;
while(cin>>sum){
convert_sum(sum);
}
return 0;
}