main() 
{
int a,i; 
scanf("%d",&a);  //输入一个整数,赋给变量a  for (i=0;i<16;i++) 
  {
     if (a<0) printf("1");
     else printf("0"); 
     a+=a; //这句的意思,就是2*a赋给a,也就是二进制的a,左移一位,右端补零
  } 

对于补码来说,最高位是符号位,所以说,如果a<0,说明最高位就是1
那么下面的a+=a,就是左移一位,这样第2位,就成了新的a值的第一位了,下面的循环类似比如        1100 1100 1100 0011
左移一位就是 1001 1001 1000 0110