相关疑难解决方法(0)

C打印位

我试图在C中编写一个打印int的程序.由于某种原因我得到错误的价值观,

void printBits(unsigned int num){
    unsigned int size = sizeof(unsigned int);
    unsigned int maxPow = 1<<(size*8-1);
    printf("MAX POW : %u\n",maxPow);
    int i=0,j;
    for(;i<size;++i){
        for(j=0;j<8;++j){
            // print last bit and shift left.
            printf("%u ",num&maxPow);
            num = num<<1;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题,首先是为什么我得到这个结果(对于printBits(3)).

最大电平:2147483648 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 2147483648 214748364 8

第二是有更好的方法吗?

c

10
推荐指数
3
解决办法
5万
查看次数

标签 统计

c ×1