Guybrush Threepwood Geschrieben 17. Dezember 2002 Geschrieben 17. Dezember 2002 Hi, kann mir einer von euch mal erklären wie die Leftshift und Rightshift Operatoren genau funktionieren? Mir ist klar das sie die Bits nach links bzw. rechts verschieben, aber so ganz blicke ich da trotzdem nicht durch. Gruß Guybrush Zitieren
SgtBadAzz Geschrieben 20. Dezember 2002 Geschrieben 20. Dezember 2002 Originally posted by Guybrush Threepwood Hi, kann mir einer von euch mal erklären wie die Leftshift und Rightshift Operatoren genau funktionieren? Mir ist klar das sie die Bits nach links bzw. rechts verschieben, aber so ganz blicke ich da trotzdem nicht durch. Gruß Guybrush Hmmm vielleicht so: 1000 0000 dann eins nach rechts ist 0100 0000 , da die geschoben werden und nicht rotiert (soweit ich noch weiss) fielgt dann das rechte raus. und dann nach links: 0000 0001 -> 0000 0010 Frank Zitieren
nic_power Geschrieben 21. Dezember 2002 Geschrieben 21. Dezember 2002 Hallo, Aufpassen muss man allerdings, wenn mit vorzeichenbehafteten Werten gearbeitet wird, da hier die Ergebnisse implementierungsabhaengig sein koennen. Nic Zitieren
Guybrush Threepwood Geschrieben 6. Januar 2003 Autor Geschrieben 6. Januar 2003 Ja, so hatte ich mir das eigentlich auch gedacht, und wenn ich sowas schreibe: int i= 1, t=4; t <<= i; [/PHP] dann ist t danach 8, ist ja auch logisch, das bit wurde um 4 nach links geschoben, aber wenn mehr wie ein Bit gesetzt sind verstehe ich es nicht mehr. Warum kommt hier: [PHP] int i= 3, t=4; t <<= i; als Ergebnis 32 raus? Es müßte doch 48 sein oder nicht? Gruß Guybrush Zitieren
nic_power Geschrieben 6. Januar 2003 Geschrieben 6. Januar 2003 Originally posted by Guybrush Threepwood Warum kommt hier: int i= 3, t=4; t <<= i; [/PHP] als Ergebnis 32 raus? Es müßte doch 48 sein oder nicht? Gruß Guybrush [/b] Nein, 32 ist schon richtig. Ein Shift nach links um eine Stelle ist im Prinzip (sofern man nicht links "rausshiftet") eine Multiplikation mit 2. In Deinem Beispiel also: 4*(2*2*2). Nic Zitieren
Klotzkopp Geschrieben 6. Januar 2003 Geschrieben 6. Januar 2003 t <<= i; ist gleichbedeutend mit t = t << i; also t = 4 << 3 48 käme in i heraus, wenn du i <<= t machen würdest. Zitieren
Guybrush Threepwood Geschrieben 6. Januar 2003 Autor Geschrieben 6. Januar 2003 Oops, ich glaub ich bin noch nicht so ganz wach:( Jetzt hab ichs kapiert, danke. Gruß Guybrush Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.