私はstd::bitset<N>
自分のプログラムで使用していて、最下位のセットビットを見つける必要があり、以下のように簡単な計算を行いました。
int num = 5;
int res = num & (-num);
その後、の最下位ビットnum
が設定されres
、残りはすべて0
'sになります。これ-5
は、2の補数表記で表されるように機能します。
しかし、基礎となるビットの2の補数を与えるstd::bitset<N>
単項演算子のオーバーロードがないことがわかりました。operator -
2の補数をで実装する簡単な方法はありstd::bitset<N>
ますか?私はいつでもoperator ~
ビットを反転してループし、合計を実行してLSBからMSBまでキャリーすることができましたが、それを回避するソリューションを探していました。