C中的位结构

时间:2013-12-20 11:58:38

标签: c struct bits

我必须存储0-127范围内出现的值。 因此,我认为将它存储在大小为128位的类型中,因此如果该位“打开”,则显示该数字,如果不是,则丢失该数字。 例如。如果第一个,第六个和九十个是1,则出现数字1,6,90。

如何在c中完全包含128位的typedef类型?

1 个答案:

答案 0 :(得分:1)

(以下解决方案仅限于Mac OS X等BSD系统。)

您可以使用<bitstring.h>中的位串操作宏。 例如:

int numBits = 128;

bitstr_t mybits[bitstr_size(numBits)];
// Alternatively: dynamic allocation:
// bitstr_t *mybits = bit_alloc(numBits);

// Set bits:
bit_nclear(mybits, 0, numBits - 1);
bit_set(mybits, 1);
bit_set(mybits, 6);
bit_set(mybits, 90);

// Test bits:
for (int i = 0; i < numBits; i++) {
    if (bit_test(mybits, i)) {
        printf("%d ", i);
    }
}