(1 & 0xFFFF) << 16L ?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

(1 & 0xFFFF) << 16L ?

Beitragvon HarryH » Donnerstag 31. August 2006, 07:37

Hallo,

Was bedeutet folgender Ausdruck?:

Code: Alles auswählen

(1 & 0xFFFF) << 16L
Gruß, Harry
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Beitragvon rayo » Donnerstag 31. August 2006, 09:14

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
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

re:

Beitragvon HarryH » Donnerstag 31. August 2006, 10:06

Vielen Dank für deine Erklärung!
Kannst du mir vielleicht noch sagen wie der Ausdruck umgekehrt aussieht?
Gruß, Harry
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Beitragvon rayo » Donnerstag 31. August 2006, 10:21

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
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

re:

Beitragvon HarryH » Donnerstag 31. August 2006, 11:30

Vielen Dank!
Gruß, Harry

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder