标签: c++ bit-manipulation std-bitset
我正在创建一个国际象棋解算器,并决定使用位板。方便地,标准棋盘上有64个方格。这很好,因为单个位板的64位操作系统普遍存在于单个寄存器中。
那就是说,使用std::bitset<64>及其中的函数或者&#34;相同&的基本类型是否存在基本差异(大小(内存和代码),速度,复杂性,内存使用等) #34;尺寸unsigned long long并手动执行钻头?
std::bitset<64>
unsigned long long
答案 0 :(得分:3)
uint64_t。您将要执行std::bitset上不可用的操作,包括几乎所有算术运算,位扫描,使用电路板的一部分作为数组的索引,以及SSE内在函数,如果您认真对待它。 / p>
uint64_t
std::bitset
例如(o^(o-2r)中没有详尽的列表,只是一些简单的例子)(及其cousin),更高级的双曲线精华,作为提取最低设置位的一部分,等
你可以使用std::bitset,但是你要将它转换回某种类型的整数。