我在我的程序中使用了std::bitset<N>
,需要找到最低有效位并进行以下简单的计算:
int num = 5;
int res = num & (-num);
在此之后,将在
res
中设置num
的最低有效位,并将其余位全部设为0。这是因为-5
是以二进制补码表示的。但我发现
std::bitset<N>
没有任何一元运算符operator -
的重载,它可以为基础位提供2的补码。有没有一种简单的方法来使用std::bitset<N>
实现2的补码?我总是可以使用operator ~
来翻转位并循环遍历它们,从LSB到MSB进行加法和进位,但我正在寻找一种避免这种情况的解决方案。