我有一个名为“bitarray”的变量,它是“无符号长整型”类型的数组。这最初是二进制格式的全零。
0000000000000000000000000000000
我使用掩码将其更改为不同的数字。
mask = 0x1FFFFFF;
bitarray[n] = bitarray[n] ^ mask;
printBinary(bitarray[n]);
结果:
0000000111111111111111111111111
然后我使用位移来检查每个位的值并打印出它的设置。
int i;
for(i=0; i<31; i++) {
if((val>>i) & 1) {
printf("1");
} else {
printf("0");
}
}
问题是它以完全相反的顺序打印:
1111111111111111111111111000000
我的目标只是能够检查是否已设置位。
最佳答案
您想首先打印最高有效位。也许尝试这样的事情:
int i;
for(i=31; i>=0; i--)
printf("%d", (val>>i) & 1);
printf("\n");
关于c - 为什么这个位函数以相反的顺序返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22486843/