Addieren und Subtrahieren von zwei Zahlen gleichzeitig



  • Ich versuche zwei Zahlen gleichzeitig zu addieren oder zu subtrahieren:

    const int VALUE_1 = 27;
    const int VALUE_2 = 41;
    
    value_1 += VALUE_1;
    value_2 += VALUE_2;
    

    Der Wertebereich von value_1 und value_2 liegt im Bereich zwischen -2^15 < value_1, value_2 < 2^15.

    Das bedeutet, ich kann beide Werte in einer Integer verwalten und somit auch gleichzeitig mit value_1 und value_2 addieren bzw subtrahieren. Wären es positive Zahlen, dann würde es sehr einfach sein:

    value += (VALUE_1 + (VALUE_2 << 15));
    

    Da value_1 und value_2 auch negativ sein kann, weiss ich nicht wie sich das bauen lässt. Habt ihr vielleicht eine Idee?

    Gruss
    T.



  • Tomahawk schrieb:

    Da value_1 und value_2 auch negativ sein kann, weiss ich nicht wie sich das bauen lässt. Habt ihr vielleicht eine Idee?

    Nein, nicht wirklich, ich hab's noch nicht ganz durchgedacht, es könnte bei +/- 2^14 klappen, aber dann mußt Du das fiktive Carry- Bit manuell setzen und auch den Overflow softwaremäßig abfangen.

    Das scheint mir den Aufwand nicht wert, allein das Herumgeshifte dürfte bereits jetzt schon mehr Zeit kosten, als was Du durch die gemeinsame Addition sparst.



  • MMX? Wenn der Compiler so ein Muster erkennt, sollte er in der Lage sein, die beiden Additionen in einem Takt auszuführen. Mal angenommen, du verwendest einen i386-kompatieblen Prozessor mit MMX und erlaubst dem Compiler die Nutzung davon.


Anmelden zum Antworten