首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在c11中支持BitSet

在c11中支持BitSet
EN

Stack Overflow用户
提问于 2016-01-01 01:34:03
回答 2查看 244关注 0票数 0

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

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

EN

回答 2

Stack Overflow用户

发布于 2016-01-01 02:02:43

在C中(C11或其他语言)本身并没有BitSet。C可以直接访问内存,所以你可以直接使用数据类型。例如,用8比特设置的比特可以用如下的uint8_t构成。

使用

代码语言:javascript
复制
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上阅读有关按位运算符的更多信息

票数 2
EN

Stack Overflow用户

发布于 2016-01-01 02:04:50

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34549725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档