2 BYTE 2 WORD :D
-
Hiho,
würde gerne wissen, ob es möglich ist 2 BYTE Variableninhalte in eine Word zu "kopieren", ohne, dass diese als Operatoren behandelt werden. Sie sollen praktisch nur aneinandergereiht werden.
Kurz mein Versuch:
BYTE tByte[] = { 0x12, 0x2 }; WORD tWord; tWord = tByte[0] + tByte[1]; cout<<"tByte[0] -> "<<tByte[0]<<endl; cout<<"tByte[1] -> "<<tByte[1]<<endl<<endl; cout<<"tByte[0] (HEX) -> 0x"<<hex<<(int)tByte[0]<<endl; cout<<"tByte[1] (HEX) -> 0x"<<hex<<(int)tByte[1]<<endl<<endl; cout<<"tWord -> 0x"<<tWord;Hier hätte ich beispielsweise das Problem, dass er 0x12 und 0x2 zusmmenrechnet.
Die Ausgabe wäre 0x14, ich will aber 0x0212 bzw. 0x212 haben.Hoffe man kann mir helfen.
MfG. teQUila4ever!
-
tWord = tByte[0] + (tByte[1] << 8);?
-
Thx! Klappt wunderbar.
Kannst du mir evtl. noch erklärn was das << 8 genau bewirkt?
Hat sicher irgendwas mit 8 Bit zu tun oder?
-
lol bit shift left -> grundlagen
-
Hat dich jemand nach deiner Meinung oder nach deinem Kommentar gefragt?
-
teQUila4ever schrieb:
Thx! Klappt wunderbar.
Kannst du mir evtl. noch erklärn was das << 8 genau bewirkt?
Hat sicher irgendwas mit 8 Bit zu tun oder?
Klar, ist eigentlich auch ziemlich einfach! Wenn du eine 16-Bit-Zahl hast, sieht die so aus: XXXXXXXX XXXXXXXX, besteht also aus jeweils 8 Bit. Da du sowohl 0x02 als auch 0x12 in jeweils eins der 8-Bit-Päckchen reinhaben willst, shiften wir einen Wert um 8 nach links um ihn in das "vordere" Byte des Words zu bekommen, der andere kann so bleiben wie er ist.
0x02 entspricht 00000010 in Binärdarstellung. Um 8 nach links geshiftet werden hinten einfach 8 Nullen drangehangen, also 00000010 00000000.
Die Addition (tByte[0] + (tByte[1] << 8)) bewirkt in diesem Fall dasselbe wie eine Ver-ODER-ung:00000000 00010010 0x12 + 00000010 00000000 0x02<<8 -------------------------- = 00000010 00010010 0x0212Die Unterscheidung Addition<->Ver-ODER-ung (bitweises ODER) ist hier egal, da jeweils ein Achterpaket nur aus Nullen besteht, in jedem Byte des Words gibt es also eine Addition mit 0.
Noch was zum Lesen aus unserem Magazin: http://magazin.c-plusplus.net/artikel/Zahlensysteme%2C Teil 1 - Grundlagen

-
Hier wird's erklärt:
http://de.wikipedia.org/wiki/Bitweiser_Operator#Bitweise_Verschiebungen
EDIT: Ok, Wikipedia hat der Sahne-Erklärung von Badestrand nichts entgegenzusetzen...

-
teQUila4ever schrieb:
Hat dich jemand nach deiner Meinung oder nach deinem Kommentar gefragt?
halt die klappe. du kennst ned mal die grundlagen der c programmierung, müllst mein winapi forum zu und willst mich noch für deine unwissenheit verantwortlich machen? halt die klappe.
-

Dafür kennst du noch nicht mal die Regeln der deutschen Rechtschreibung...
Aber entschuldige, was erdreiste ich mich, dich in deinem Forum anzugreifen...
-
Spast lern deutsch
-
nimm das MAKEWORD makro