示例:
在abc [2]中我们找到第3位然后,实际位数将是8 * 2 + 3,即19位设置!那样的。
答案 0 :(得分:1)
你可以做一个简单的操作检查:
abc[i] & (1 << n)
如果未设置位,则为0
;如果已设置,则为(1 << n)
答案 1 :(得分:0)
使用GCC时,您可以使用
固定位图查找如果您不愿意使用某些GCC中心扩展并且不想将您的数组解析为uint32_t,您仍然可以使用ffs()函数来查找第一位(低位)集在每个数组索引处,请参阅ffs()的联机帮助页。
答案 2 :(得分:-1)
这有帮助吗?
int l = sizeof(abc);
int k = sizeof(*abc);
int i, j;
for (i = 0; i < l; ++i) {
char n = abc[i];
for (j = 0; j < k; ++j) {
if (n & 0x01)
printf("Bit number %d is set.\n", (l*k)-i);
n = n >> 1;
}
}