【发布时间】:2013-05-07 23:48:03
【问题描述】:
以下代码用于数字的二进制表示。
这段代码工作正常.....但我不知道为什么
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;
}
【问题讨论】:
-
为什么不直接使用
!=而不是>? -
!= 有效.. 但我想知道这段代码有什么问题?
标签: binary