int main() { int n,i; unsigned flag = 1<<(sizeof(int) * 8 - 1); printf("Input the number\n"); scanf("%d",&n); for(i=0;i<sizeof(int)*8;i++) { printf("%d",!!(n & flag) ); n = n << 1; } return 0; }
按位和结果有两种结果:
>零 – 表示数字中的数字为0@H_502_11@MSB.@H_502_11@>非零 – 表示数字为1英寸@H_502_11@它的MSB.
现在我们需要一种映射方式
Non-zero -> 1 Zero -> 0
所以我们使用双重否定.
可以使用以下方法完成同样的事情:
for(i=0;i<sizeof(int)*8;i++) { (n & flag) ? printf("1"):printf("0"); n = n << 1; }