我有一个名为“bitarray”的变量,它是一个'unsigned long'类型的数组。这最初都是二进制格式的零。
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
我的目标是能够检查是否设置了一个位。
答案 0 :(得分:1)
您想先打印最重要的位。也许尝试这样的事情:
int i;
for(i=31; i>=0; i--)
printf("%d", (val>>i) & 1);
printf("\n");
答案 1 :(得分:1)
切换循环顺序
// for(i=0; i<31; i++) {
for(i=31; i >= 0; i--) {