下面的代码用于数字的二进制表示。这段代码工作正常......但我不知道为什么
if((x&(0x80000000))>0)
应该这样做<0
,>0
因为如果 x 的第一位是 1,则生成的数字将是 -2147483748,小于 0,但这段代码仍然有效。
#include<stdio.h>
int main()
{
int x;
scanf("%d",&x);
for(int i=0;i<32;i++)
{
if((x&(0x80000000))>0)
printf("1");
else
printf("0");
x=x<<1;
}
printf("\n");
getchar();
getchar();
return 0;
}