#include<stdio.h>
#define N 35
int main()
{
//输入任意整数
int n;
scanf("%d",&n);
int q[N];
int i=0;
//得到每一位二进制数,但是顺序是反过来的
while(n>0)
{
q[i++]=n%2;
n=n/2;
}
//缺少项补0
while(i<=32)
{
q[i++]=0;
}
//倒着输出
while(i>=0)
{
printf("%d",q[i--]);
}
return 0;
}
如果想要输出负数的,只需进行判断,在最高位补1就行
优化:
#include<iostream>
using namespace std;
int main()
{
const int N=35;
int n;
cin >> n;
int q[N];
int i = 0;
while (i < 32)
{
q[i++] = n % 2;
n = n / 2;
}//这里省去了补0的部分
while (i >= 0)
{
cout << q[i--];
}
return 0;
}