stavo usando std::bitset<N>
nel mio programma e avevo bisogno di trovare il bit meno significativo insieme e ha fatto il calcolo banale come di seguito:C'è un modo banale per ottenere complemento a 2 di uno std :: bitset <N>
int num = 5;
int res = num & (-num);
Dopo di che il bit meno significativo di num
è impostato su res
e il resto su tutti è 0
. Funziona come -5
è rappresentato nella notazione complemento a 2.
Ma ho trovato std::bitset<N>
non ha alcun overload di operatore per unario operator -
che mi avrebbe dato il complemento 2 per i bit sottostanti. C'è un modo banale per implementare il complemento 2 con std::bitset<N>
? Potrei sempre usare per capovolgere i bit e ricollegarli facendo la somma e portandoli a partire da LSB a MSB, ma stavo cercando una soluzione che evitasse questo.
Certamente ci sono molti ** modi non banali di fare quasi tutto! – rodrigo
Ho notato che avrei dovuto usare __trivial__ :-p Modifica il titolo. – vvnraman
Si noti che il looping sul bitset capovolto è molto probabilmente più veloce del semplice loop sul bitset originale per trovare il bit meno significativo (che trovo la soluzione banale in questo caso;)) – Zeta