前端之家收集整理的这篇文章主要介绍了
C中数字的二进制表示,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我遇到了这个
代码,用于表示数字的二进制表示.我想知道使用的必要性!!在
代码中.
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;
}
使用的标志只有MSB设置而所有其他位都被清除,所以当你按位时它和数字你可以测试数字中的MSB.
按位和结果有两种结果:@H_301_9@
>零 – 表示数字中的数字为0
MSB.
>非零 – 表示数字为1英寸
它的MSB.@H_301_9@
现在我们需要一种映射方式@H_301_9@
Non-zero -> 1
Zero -> 0
所以我们使用双重否定.@H_301_9@
可以使用以下方法完成同样的事情:@H_301_9@
for(i=0;i<sizeof(int)*8;i++) {
(n & flag) ? printf("1"):printf("0");
n = n << 1;
}
原文链接:https://www.f2er.com/c/117116.html