支持c11中的BitSet

时间:2015-12-31 17:34:03

标签: c bitset c11

我将一些用Java编写的代码移植到C11。 Java代码使用BitSet来翻转向量中的翻转位。我知道c ++有相应的BitSet,但我不确定c11是否有类似的东西可用。我必须按要求使用c11。我对c11中较新的函数集不太熟悉,因为我以前的大多数代码都是ANSI-C或C99。

在C(C11)中是否可以使用这样的东西,或者我是否需要编写自己的函数来映射到内存组然后使用位运算符?

2 个答案:

答案 0 :(得分:2)

在C(C11或其他)中没有BitSet本身。 C可以直接访问内存,因此您可以直接使用数据类型。例如,可以使用uint8_t进行8位设置,如下所示。

<强>用法

uint8_t bitset = 0;
bitset = bitset | (1 << 4); // set 4th bit, like BitSet.set(4)
bitset = bitset & ~(1 << 3); // unset 3rd bit, like BitSet.clear(3)
bitset = ~bitset; // flip the bits, like BitSet.flip(0, 7)
bitset = bitset ^ (1 << 4); // flip the 4'th bit like BitSet.flip(4)

https://en.wikipedia.org/wiki/Bitwise_operations_in_C

了解有关按位运算符的详情

答案 1 :(得分:0)

就我而言,C标准库中不存在这样的功能。你必须自己写。幸运的是,bitset是最容易实现的数据结构之一。