Seite 1 von 1

(1 & 0xFFFF) << 16L ?

Verfasst: Donnerstag 31. August 2006, 07:37
von HarryH
Hallo,

Was bedeutet folgender Ausdruck?:

Code: Alles auswählen

(1 & 0xFFFF) << 16L

Verfasst: Donnerstag 31. August 2006, 09:14
von rayo

Code: Alles auswählen

1 & 0xFFFF
ist Bitweise eine AND-Verknüpfung -> resultat ist wieder eine 1 :)

Code: Alles auswählen

1 << 16L
schiebt die 1 Bitweise 16 Stellen nach rechts. Ergibt dann 65536 oder in hex dargestellt 0x10000

Gruss

re:

Verfasst: Donnerstag 31. August 2006, 10:06
von HarryH
Vielen Dank für deine Erklärung!
Kannst du mir vielleicht noch sagen wie der Ausdruck umgekehrt aussieht?

Verfasst: Donnerstag 31. August 2006, 10:21
von rayo
Hi

Code: Alles auswählen

(res >> 16)
Das reicht schon weil eine AND-Verknüpfung mit 0xFFFF kannst du nicht rückgängig machen, weil die einfach alles was grösser als 0xFFFF ist abschneidet.

Dein erster Code macht eigentlich nichts anderes als die ersten 2 Bytes von der Zahl zu nehmen und 2 Bytes nach vorne zu schieben, dass die 2 ersten bytes wieder leer sind
Also 0xffabcdwird zu 0xabcd0000
Nacher einfach wieder zurückschieben -> 0xabcd (das 0xffabcd kannst du nicht wieder herstellen)

Gruss

re:

Verfasst: Donnerstag 31. August 2006, 11:30
von HarryH
Vielen Dank!