was macht dieser operator



  • Hi,
    ich habe den Operator << schon oft verwendet, aber habe nie kapiert was er eigendlich macht.

    zum Beispiel

    hdr.bfType = ((WORD) ('M' << 8) | 'B');  // is always "BM"
    

    könnt ihr es mir eklären?

    Grüße twin



  • hab übersehen, dass dieses thema kurz zuvor schoneinmal angesprochen wurde
    sorry



  • hi
    hat sich nicht geklärt 😞
    könnt ihr mir doch helfen?
    Grüße twin





  • Hi
    ich hab auch schon ein bisschen gegoogelt hab nur leider nichts gefunden (bin nicht so oft im internet)

    danke für deinen Link
    ich kann nur leider nicht so gut englisch
    hast du noch einen "deutschen" link 😃

    achja versucht lieber nicht eine seite wo's ums Programmieren geht mit dem googletranslator zu übersetzten 😉

    Grüße twin



  • "Die Schiebeoperatoren von C++ besitzen zwei ganzzahlige Operaden und
    verschieben die Bits ihres linken Operanden um so viele Stellen nach links oder
    rechts, wie ihr rechter Operand angibt. Das Ergebnis der Operation ist vom Typ
    des linken Operanden. Ist der rechte Operand negativ, so ist das Ergenis der
    Schiebeoperation undefiniert"

    Operand Bedeutung           Priorität  Assoziativität           Beispiel
      <<    Linksverschiebung      11      von links nach rechts    x << y
      >>    Rechtsverschiebung     11      von links nach rechts    x >> y
    

    Quelle: C++ Das Grundlagen Buch

    [ Dieser Beitrag wurde am 24.05.2003 um 16:12 Uhr von C Newbie editiert. ]



  • Hi
    also am Beispiel ((WORD) ('M' << 😎 | 'B') :
    M hat den ascii code 77 also binär 0100 1101
    B hat den ascii code 66 also binär 0100 0010

    'M' << 8 ist dann 0100 1101 0000 0000 = 0000 0000
    mit | 'B' ergibt sich dann
    0000 0000
    0100 0010
    -------------
    0000 0000

    das kann ja schlecht sein 😃
    was ist falsch?

    Grüße twin



  • Wie kommst du auf den Schwachsinn: 0100 1101 0000 0000 = 0000 0000 ??

    So muss es heissen:
    'M' << 8 ist dann 0100 1101 0000 0000
    mit | 'B' ergibt sich dann
    0100 1101 0000 0000
    0000 0000 0100 0010
    -------------------
    0100 1101 0100 0010

    Edit: Ich kann mir denken, wie du darauf kommst:
    Du hast jede 4ergruppe als Byte interpretiert, ein Byte hat aber 8 bit 🙂

    [ Dieser Beitrag wurde am 24.05.2003 um 17:43 Uhr von dEUs editiert. ]



  • Hi
    danke für deine Antwort
    jetzt ises klar 🕶

    Grüße twin


Anmelden zum Antworten