Gesetzte Bits eines Bytes zählen



  • Ich suche eine geschickte Möglichkeit, die anzhal der gesetzten Bits in einem
    Byte zu untersuchen, insbesondere ob mehr als eines gesetzt ist.

    Bsp:

    f( 00100000 ) = wahr
    f( 00000000 ) = wahr
    f( 00000100 ) = wahr
    f( 11000001 ) = falsch
    f( 00010010 ) = falsch
    

    Die einzige Variante, die ich gefunden habe, beschränkt sich auf das ansprechen
    und prüfen jedes einzelnden Bits, solange, bis ich zwei gesetzte Bits gefunden habe.

    Schöner wäre natürlich eine Funktion, die sich ohne Schleife mit wenigen bitweise-Operationen
    auskäme. Kann man so eine überhaupt konstruieren?



  • dann wird dich das hier aber freuen:

    #include <iostream>
    using namespace std;
    
    int main(){
    	for(int i=0;i<10;++i)
    		if(i&i-1)
    			cout<<i<<endl;
    }
    


  • Danke!


Anmelden zum Antworten