#include<bits/stdc++.h>
using namespace std;
int main()
{
int x;
int a[100];
while(cin>>x){
memset(a,0,sizeof a);
int k=0;
while(x!=0){
a[k++]=x%2;
x>>=1;
}
for(int i=k-1;i>=0;i--){
cout<<a[i];
}
cout<<endl;
}
return 0;
}
运行后:
- 还有一种是把前面的0都输出,凑够32位的代码;
#include<bits/stdc++.h>
using namespace std;
int main()
{
int x;
while(cin>>x){
for(int i=31;i>=0;i--){
cout<<(x>>i&1);//先右移,在与运算
}
cout<<endl;
}
return 0;
}
运行后:
负数转换成二进制
1.将十进制输转化成二进制数,不管符号。
2.对转化的二进制数逐位取反
3.对取反后的二进制数加1,结果就是十进制负数转化成的二进制数。
例:-32转化成二进制数
1.(十进制)32=(二进制)00100000
2.(二进制)00100000逐位取反为:11011111
3.二进制数+1得:11100000
例:-5转化成二进制数
1.(十进制)5=(二进制)00000101
2.(二进制)00100000逐位取反为:11111010
3.二进制数+1得:11111011