我必须存储从0-127范围内的值出现在某处。
因此,我认为将其存储为大小为128位的类型,这样,如果该位“打开”,则会出现该数字,如果没有,则该数字会丢失。
例如。如果第一,第六和九十年代为1,则出现数字1,6,90。

如何在c中按类型定义类型,确切地包含128位?

最佳答案

(以下解决方案仅限于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);
    }
}

关于c - C中的位结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20703179/

10-12 05:29