我std::bitset<N>
在我的程序中使用,需要找到最不重要的设置位,并进行了如下简单的计算:
int num = 5;
int res = num & (-num);
之后设置最低有效位,num
其余res
均为0
's。这可以-5
用 2 的补码表示法表示。
但是我发现std::bitset<N>
一元没有任何运算符重载,operator -
这会给我底层位的 2 补码。有没有一种简单的方法来实现 2 的补码std::bitset<N>
?我总是可以operator ~
用来翻转比特并循环它们,从 LSB 到 MSB 进行求和和进位,但我正在寻找一种可以避免这种情况的解决方案。