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
{
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
循环16次
这个数的二进制,就打印出来了。