C中数字的二进制表示

前端之家收集整理的这篇文章主要介绍了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

猜你在找的C&C++相关文章