hi,
kann mir jemand sagen wie ich in C++ die Bits verschieben kann ohne dass sie irgendwann "rausfallen", also an einer seite raus-, und an der anderen wieder reinkommen?
Ich hoffe ihr könnt mir schnell weiterhelfen.
mfg
GSl4sh
hi,
kann mir jemand sagen wie ich in C++ die Bits verschieben kann ohne dass sie irgendwann "rausfallen", also an einer seite raus-, und an der anderen wieder reinkommen?
Ich hoffe ihr könnt mir schnell weiterhelfen.
mfg
GSl4sh
--
Ist zwar kein C++, aber da c++ mit Sicherheit inlineAssembler besitzt, solltest du diese Variante vielleicht in Anschein nehmen:
ROR Variable,Bit
oder
ROL Variable,Bit
Das erste Rotiert die Anzahl der in "Bit" Angegebenen Bit nach rechts, das 2te Beispieln nach links.
Ist übrigends eine Methode um Zahlen zu teilen oder zu verdoppeln. Nach links veschieben verdoppelt den Wert der Variable, nach Rechts verschieben verkleinert den Wert um die Hälfte. Ganze durch 2 teilbare Zahlen sind allerdings Vorrausgesetzt, sonst gibt's unschöne Float-Werte.
In C++ musst du das ein bisschen umschreiben:
Das entspricht a<<5 wobei die ersten 5 Stellen nicht wieder rausfallen.
lg Firzen
bitshiften kannst du auf zwei arten, entweder wie Frizen beschrieben hat oder mit multiplikationen mit 2er potenzen. dh 2^1 verschieben um ein bit, 2^2 verschieben um 2 bit und so weiter. wird bei serialisierung so gebraucht.
²Sunny: Nein, so einfach ist das mit Inline-Assembly nicht in C++. Erstens kommt es auf den Compiler an, und wenn der Compiler es denn vielleicht beherrscht unterscheidet sich die Syntax manchmal recht stark von anderen Standards oder dem "normalen" ASM wie du es zeigst. Die Syntax des Inline-ASM von GNU-CC hab ich z.B. immernoch nicht verstanden. o_O°.
Das wollte ich nur mal loswerden. Ansonsten hat Firzen recht. ^^.
--Abwesend.
Geändert von Dingsi (15.11.2004 um 15:28 Uhr)