Hallo,
ich habe in einem short 5 Datenblöcke a 3 Bits gespeichert der Wert der höchsten Bits bleibt dabei immer frei.
Jetzt möchte ich den Datenblock mit den Bits 0,1,2 per cyclic rotate an die Stelle 12,13,14 schreiben und zwar ohne am 15. Bit etwas zu ändern. z.b.:
0100 0000 0000 0111 -> 0111 1000 0000 0000
Eine Lösung wäre sowas in der Art:
Hat jemand vielleicht eine Idee wie und ob man das noch performanter machen kann - am besten ohne diese Hilfsvariable?
Bisher habe ich es mit rol / ror asm Befehlen bzw. arithmetic (vorzeichenerhaltende) shifts versucht, aber keine Idee schien vielversprechend
Vielen Dank für eure Ideen!
ich habe in einem short 5 Datenblöcke a 3 Bits gespeichert der Wert der höchsten Bits bleibt dabei immer frei.
Jetzt möchte ich den Datenblock mit den Bits 0,1,2 per cyclic rotate an die Stelle 12,13,14 schreiben und zwar ohne am 15. Bit etwas zu ändern. z.b.:
0100 0000 0000 0111 -> 0111 1000 0000 0000
Eine Lösung wäre sowas in der Art:
Code:
short value = 42;
short tmp = value % 8;
value = (valule >> 3) + (tmp << 12);
Hat jemand vielleicht eine Idee wie und ob man das noch performanter machen kann - am besten ohne diese Hilfsvariable?
Bisher habe ich es mit rol / ror asm Befehlen bzw. arithmetic (vorzeichenerhaltende) shifts versucht, aber keine Idee schien vielversprechend
Vielen Dank für eure Ideen!