我必须存储0-127范围内出现的值。 因此,我认为将它存储在大小为128位的类型中,因此如果该位“打开”,则显示该数字,如果不是,则丢失该数字。 例如。如果第一个,第六个和九十个是1,则出现数字1,6,90。
如何在c中完全包含128位的typedef类型?
答案 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);
}
}