以下のコードは、数値のバイナリ表現です。if((x&(0x80000000))>0)
このコードは正常に動作します.....しかし
、x の最初のビットが 1 の場合、生成される数値は -2147483748 になり、0 未満になりますが、このコードは機能します<0
。>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;
}