如何逐位读取“char abc [10]”并检查哪个位置?

时间:2011-02-11 06:18:40

标签: c arrays bitmap char bit

示例:

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

3 个答案:

答案 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;
    }
}