Einzelnen Beitrag anzeigen
Alt 26.11.2002, 12:45   #13
Flink
Hero
 
Registriert seit: 29.08.2001
Alter: 57
Beiträge: 904


Flink eine Nachricht über ICQ schicken Flink eine Nachricht über Skype™ schicken
Standard

@kikakater:
Zitat:
Da nicht rotiert wird - sondern geshiftet - fällt alles von den unteren 8 Bits weg und die oberen 8 Bits werden durch das Verschieben um 8 Stellen nach rechts zu den unteren 8 Bits
Das ist nur dann der Fall, wenn die C-Variablen als unsigned int deklariert worden sind! Wenn man nicht explizit unsigned angibt, verwenden die meisten Compiler standardmäßig signed int! In diesem Fall wird jedoch das Vorzeichen beibehalten, was bedeutet: Wenn an Bitposition 15 eine 1 gestanden ist, dann werden 1er beim Shift-Befehl jeweils an Bitposition 15 gesetzt. Dies deshalb, weil eine 1 vorne als negative Zahl interpretiert wird, die beim Shift erhalten bleiben soll.
Um auf Nummer sicher zu gehen und sich nicht um signed/unsigned kümmern zu müssen:
register a = (16bit register >> 8 ) & 0xFF;
____________________________________
Bibel
Flink ist offline   Mit Zitat antworten