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

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:

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

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:

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

Donnerstag 31. August 2006, 11:30

Vielen Dank!
Gruß, Harry
Antworten