当前方向:
使用sizeof在我的系统上以1字节开头,并使用unsigned char。范围是0-255。 如果length是我需要的位数,那么elements就是我在数组中需要的元素数(字节数)。
constant unsigned int elements = length/8 + (length % y > 0 ? 1 : 0);
unsigned char bit_arr[elements];
现在我添加了基本功能,例如set,unset和test。其中j是每字节位数的索引,i是字节索引,h =位索引。我们有i = h / 8和j = i%8。
Psuedo-Code:
bit_arr[i] |= (1 << j); // Set
bit_arr[i] &= ~(1 << j); // Unset
if( bit_arr[i] & (1 << j) ) // Test
答案 0 :(得分:6)
看起来你非常清楚需要做什么。虽然代替pow(2, j)
,但请使用1 << j
。您还需要更改test
代码。您不希望测试对数组进行分配。
答案 1 :(得分:2)
pow()
会为您提供您不想要的浮点值。完全没有。它可能适合你,因为你使用2的幂,但随着j
变大,它可能会变得奇怪。
您可以更好地使用1 << j
。消除浮动怪异的任何可能性,它也可能表现更好。