Frage Bitshiften



  • Hallo ich verstehe das mit dem Bitshiften irgendwie nicht so richtig.

    z.b. folgender code:

    int x =3; 
    int y =2; 
    x=4<<y;
    
    printf("%d", x); //Ausgabe x=16
    

    aber warum wird 16 ausgegeben. Laut definition:

    ...verschiebt den Inhalt einer Variable bitweise nach links. Bei einer ganzen nicht negativen Zahl entspricht eine Verschiebung einer Multiplikation mit 2n, wobei n die Anzahl der Verschiebungen ist

    Also lautet die Rechnung: 2*2*4=16, soweit ok

    aber wenn ich "manuell" shifte:

    10   // binäre Darstellung für 2 -> Ausgangspunkt
       100   // erster Linksshift
      1000   // zweiter Linksshift
     10000   // dritter Linksshift
    100000   // vierter Linksshift = 32
    

    komme ich auf 32.

    Wo liegt mein Fehler? Danke



  • Ob du 4 zweimal shiftest, oder 2 viermal, ist nicht dasselbe.



  • DANKE


Log in to reply