0

例子:

在 abc[2] 中,我们找到第 3 位,然后,实际位数将是 8*2+3,即第 19 位已设置!像那样。

4

3 回答 3

1

你可以做一个简单的操作检查:

abc[i] & (1 << n)

那将是0如果未设置位并且(1 << n)已设置

于 2011-02-11T06:21:49.147 回答
0

使用 GCC 时,您可以使用

如果您不愿意使用一些以 GCC 为中心的扩展并且不想将您的数组解析为 uint32_t,您仍然可以使用ffs()函数来查找在每个数组中设置的第一位(低位)索引,请参阅ffs()的联机帮助页。

于 2011-02-11T09:30:38.540 回答
-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;
    }
}
于 2011-02-11T06:33:48.927 回答