Würde ich auch so machen, vor allem weil der Compiler das noch weiter optimieren kann (der rechnet einfach direkt mit dem Register weiter das die oberen 8 Bit enthält).


Außerdem braucht man prinzipiell nur eine Division, wenn man das ganze folgendermaßen ausrechnet:

R = (((255 - A) * R1) + (A * R2)) / 256

würde man es nämlich so machen: (A / 256) * R2 müsste man ja sogar mit Floats arbeiten, da ist es doch erheblich performanter de Division erst als letzten Schritt durchzuführen (und eben zusätzlich durch einen Shift zu ersetzen)