high und low bit in short Datentyp abfrage



  • Hallo ich versuche gerade einen Rückgabewert von einer Funktion auszuwerten.

    Folgendes steht in der Dokumentation:

    http://msdn.microsoft.com/en-us/library/windows/desktop/ms646301(v=vs.85).aspx
    
    Return value
    
    Type: SHORT
    
    The return value specifies the status of the specified virtual key, as follows: 
    If the high-order bit is 1, the key is down; otherwise, it is up.
    If the low-order bit is 1, the key is toggled. A key, such as the CAPS LOCK key, is toggled if it is turned on. The key is off and untoggled if the low-order bit is 0. A toggle key's indicator light (if any) on the keyboard will be on when the key is toggled, and off when the key is untoggled.
    

    Ich weiss wohl das ich mit << und >> Bit verschieben kann aber leider nicht wie ich auf das high bzw. low bit zugreifen kann.





  • Siehe meine Signatur.

    👍
    Bester Beitrag den ich heute gelesen habe ...

    Wenn ich wüsste was ich bei Google eingeben soll würde ich dort ja gerne nachschauen.



  • In etwa so:

    (ret &  0x8000) != 0 // high bit is set
    (ret & 0x0001) != 0  // low bit is set
    

    oder

    (ret >> 15) != 0 // high bit is set
    (ret << 15) != 0 // low bit is set
    


  • Zur Not mal nach Google gehen und dort "c++ bitoperationen" eingeben



  • Ich hätte noch eine Frage zu den hexadezimalen Masken, die ich wirklich überall sehe.
    Wenn ich diese Maske sehe, dann zähle ich von rechts die Nullen, nehme das mal 4 und rechne darauf dann noch den logarithmus von der signifikanten Ziffer zur Basis 2.
    Jetzt ist meine Frage: Mache ich das zu kompliziert? Ich kann mir nicht erklären warum da nicht öfter (1 << x) steht, was man (meiner Berechnungsweise zugrunde legend) doch wesentlich schneller auswerten kann.



  • Decimad schrieb:

    Jetzt ist meine Frage: Mache ich das zu kompliziert? Ich kann mir nicht erklären warum da nicht öfter (1 << x) steht, was man (meiner Berechnungsweise zugrunde legend) doch wesentlich schneller auswerten kann.

    coolness.

    Ne, es gibt keinen relevanten Grund irgendwelche obskuren magic numbers in den Code zu schreiben, bis auf, dass es eben cool ist. Ich würde immer empfehlen zu shiften, uU auch eine Funktion schreiben die die korrekte Bitmaske generiert, etc.

    Interessant sind diese magic Numbers aber, wenn sie Namen bekommen.
    Ein:
    if(ret & TOGGLED_MASK)
    sieht schon nett aus.


Anmelden zum Antworten