/* C语言
蓝桥杯 明码
转换每一个数字后随即输出
逢二换行
*/
#include <stdio.h>
#include <math.h>
#define N 320
int main()
{
signed int num[N];
int j,flag=0,k=1,temp,sign;
for(j=0;j<N;j++)
{
scanf("%d",&num[j]);
temp=num[j];
int n=0,count=0,w=1,i;
int m[8]={0};
while (w) //转换二进制
{
num[j]=fabs(num[j]);
n=num[j]%2;
m[count++]=n;
num[j]=num[j]/2;
if (num==0)
w=0;
}
if (temp<0) //若为负,取反码,再取补码
{
int jw=0;
for (k=0;k<8;k++)
{
m[k]=(m[k]==0)?1:0;
}
m[0]+=1;
for (k=0;k<8;k++) //数组计算,逢二进一,完成补码转换
{
sign=m[k]+jw;
m[k]=sign%2;
jw=sign/2;
if (jw==0)
break;
}
}
for (i=0;i<8;i++)
{
printf("%d",m[8-1-i]);
}
flag++; //逢二换行
if (flag%2==0)
{
printf("\n");
}
}
return 0;
}