我必须存储从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/