我试图在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 ×1