Bits setzen / löschen in einer Funktion



  • Hallo,

    ich möchte gern innerhalb einer Funktion ein bestimmtes Bit setzen oder auch löschen können - wie realisiere ich das am Besten?

    void main()
    {
    
      function(0x0002);  //zweites bit setzen
    
      function(~(0x0002)); //zweites bit wieder löschen -> klappt nicht  :( 
    
    }
    
    void function(unsigned short bits)
    {
      unsigned short test=0; 
    
      test |= bits;   //bits setzen (wie kann ich sie auch löschen)? 
    
    }
    

    thanks in advance
    Jörg



  • Signatur fuer eine moegliche Funktion:

    // bitpos: bit number of a byte
    // ref: points to the byte that should be changed
    // value: 0 or 1
    void setbit( char bitpos, byte* ref, char value );
    


  • ^^zum löschen nimm 'ne und-verknüpfung mit dem negierten zweiten operanden. z.b. so:

    x = x & ~2; // <-- löscht bit 2
    

    🙂



  • vielen Dank für die Antworten... das mit dem &-Zeichen wusste ich schon, dachte es gibt vielleicht einen kniffligen Trick ohne einem weiteren übergebenen Funktions-Parameter festlegen zu können, ob das Zeichen gelöscht oder gesetzt wird.

    Jörg



  • Jörg Berger schrieb:

    ich schon, dachte es gibt vielleicht einen kniffligen Trick ohne einem weiteren übergebenen Funktions-Parameter festlegen zu können

    mit tricks geht alles. kannst ja die funktion so schreiben, dass sie bits nur setzt, die vorher 0 waren, umgekehrt werden sie gelöscht. das schipft sich übrigens 'exklusiv-oder'
    🙂


Anmelden zum Antworten