我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 进行求和和进位,但我正在寻找一种可以避免这种情况的解决方案。