c++ - 使用 std::bitset 或相同大小的基本类型?

标签 c++ bit-manipulation std-bitset

我正在创建一个国际象棋解算器并决定使用位板。方便的是,标准棋盘上有 64 个方格。这很好,因为 64 位操作系统很流行,单个位板可以放入单个寄存器。

也就是说,使用 std::bitset<64> 是否存在根本差异(大小(内存和代码)、速度、复杂性、内存使用等)以及其中的功能或“相同”大小的基本类型unsigned long long并手动执行位操作?

最佳答案

uint64_t 可能。你会想要执行 std::bitset 上不可用的操作,包括几乎所有的算术运算、位扫描、使用板的一部分作为数组的索引,以及 SSE 内在函数(如果你认真的话)关于它。

例如(无论如何都不是详尽的列表,只是一些简单的例子)在o^(o-2r) (及其 cousin ),更高级的 Hyperbola Quintessence,作为提取最低设置位等的一部分。

您可以使用 std::bitset 但您会经常将它转换回某种类型的整数。

关于c++ - 使用 std::bitset 或相同大小的基本类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31899289/

相关文章:

c++ - `>>>` 如何在 C++0x 中进行词法分析?

c++ - 如何递归复制文件夹和文件而不损失文件修改时间?

c++ - 有符号的转移

c++ - 手动位字段与 std::bitset 的内存守恒

c++ - 位集声明导致 SIGSEGV

c++ - 从队列中删除 unique_ptr

c++ - 在多线程上使用共享缓冲区 boost asio async_write

c - 用位移位代替加法运算

java - 为什么字节以不同的大小打印为位数组

c++ - 是否希望在不久的将来将 std::bitset<128> 转换为单个 128 位整数?