Veröffentlicht 23. Januar 200223 j Hallo! Wie kann ich in C++ ne´ Bitoperation machen?! Eine Linkssrotation! also im Byte 1011 1000 soll das letzte Bit nach Links wegrücken! Das letzte soll dann wieder rechts reingeschoben werden. Danke!!! MfG NetzKing
23. Januar 200223 j Natürlich macht man sowas mit dem Inline-Assembler: char zahl=0x81; diese Zahl wird mit nur einem Befehl rotiert __asm { rol zahl,1 } andersrum wäre: ror zahl,1 Bitrotationen wurden leider gar nicht in C Prozessorkonform berücksichtigt, obwohl jeder Prozessor beschleunigte Standardbefehle für Bitshift&rotate mit und ohne arithmetische Berücksichtigung hat, weshalb es da nur eingeschränkte und alles andere als optimierte Möglichkeiten gibt: z.B. halt so: zahl=zahl<<1|(bool)(zahl&0x80); da kommt aber ein riesen Assembler-Code bei raus: movsx ecx,byte ptr [ebp-8] shl ecx,1 movsx edx,byte ptr [ebp-8] and edx,80h neg edx sbb edx,edx neg edx and edx,0FFh or ecx,edx mov byte ptr [ebp-8],cl ... was doch ein klein wenig länger braucht.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.