Verständnisfrage LOWORD vs HIWORD
-
Ich lese mich grad durch den WIN-API Wälzer von Charles Petzold. In seinem Programmen benutzt Petzold dieses LOWORD(lParam) bzw. HIWORD(lParam) um Variablen werte zuzuweisen.
Allerdings blick ich jetzt gar nicht mehr durch diese ganzen WORDS's durch. Wo ist der Unterschied zwischen
LOWORD
HIWORD
DWORD
WORDkann mir das jemand erklären, im web find ich keine Antwort bei dir ich sagen könnte "ich habs verstanden".
-
BYTE ... 1 Byte Speicher
WORD ... 2 Byte Speicher
DWORD ... 2 * 2 Byte SpeicherEin DWORD kann man sich jetzt entweder als 4 Byte Speicher ansehen oder aber auch als 2 * 2 Byte. Im Falle der MsgProc stellt man sich es als 2 * 2 Byte vor. Das erste WORD des DWORD bezeichnet man in dem Fall dann als "Lo(w) Word" das zweite als "Hi(gh) Word":
32. Bit 1. Bit 10101010 01010101 10101010 01010101 [ HIGH WORD ] [ LO WORD ]
MfG SideWinder
-
Aber in vielen Büchern ist immer von Maschinenwörtern die Rede und es wird gesagt auf x86 hat ein Wort 4 Byte. Was hat es damit auf sich? Wieso ist WORD in Windows dann eigentlich ein short mit 2 Byte?
-
Ein WORD ist ein unsigned short mit 2 Byte. Da ich aus der Windows-Szene komme kenne ich das auch nur so. Auch der Windows-Taschenrechner sieht ein WORD als 2-Byte-Integer an und ein DWORD als 4-Byte-Integer.
MfG SideWinder
-
-
SideWinder schrieb:
BYTE ... 1 Byte Speicher
WORD ... 2 Byte Speicher
DWORD ... 2 * 2 Byte SpeicherEin DWORD kann man sich jetzt entweder als 4 Byte Speicher ansehen oder aber auch als 2 * 2 Byte. Im Falle der MsgProc stellt man sich es als 2 * 2 Byte vor. Das erste WORD des DWORD bezeichnet man in dem Fall dann als "Lo(w) Word" das zweite als "Hi(gh) Word":
32. Bit 1. Bit 10101010 01010101 10101010 01010101 [ HIGH WORD ] [ LO WORD ]
MfG SideWinder
Also ist besteht ein DWORD aus HIWORD und LOWORD, wobei HIWORD und LOWORD selber nur WORDS sind
- danke, ich glaub ich habs verstanden.
-
Martin Richter schrieb:
Siehe auch:
http://de.wikipedia.org/wiki/Wort_%28Informatik%29Aha Danke man lernt jeden Tag etwas dazu
-
Das dachte ich mir auch.
Der 3 und 486 war doch nur 16bit, wie die gute alte Amiga Serie.
War der Pentium I schon 32 Bit?
Ich meinte, dass der Sprung bei den OS mit Win95 kam.
-
1310-Logik schrieb:
Das dachte ich mir auch.
Der 3 und 486 war doch nur 16bit, wie die gute alte Amiga Serie.
War der Pentium I schon 32 Bit?
Ich meinte, dass der Sprung bei den OS mit Win95 kam.Mit dem 80386 führte Intel dann bereits 1985 die erste x86-CPU mit einer 32-Bit-Architektur ein. (Quelle: wikipedia)
-
Souljumper schrieb:
Also ist besteht ein DWORD aus HIWORD und LOWORD, wobei HIWORD und LOWORD selber nur WORDS sind
Naja, fast. WORD und DWORD sind Datentypen, dh du kannst damit Variablen deklarieren. LOWORD und HIWORD sind einfach zwei Makros, mit denen du das Lo bzw Hi Word eines DWORDs ermitteln kannst.
-
Ein DWORD ist doppelt so gross wie ein WORD, also kannst du in ein DWORD bei bei Bedarf auch 2 einzelne WORD variablen reinstopfen. Die HIWORD und LOWORD Makros extrahieren dann aus einer DWORD variable wieder 2 WORD variablen. So kannst du halt 2 unabhängige werte in einer variable unterbringen. Für den umgekehrten Weg gibt es das MAKELONG makro welches dir aus 2 WORD variablen wieder eine DWORD (LONG) variable zusammenbaut...