POS_NEW = HIGHER;
POS_NEW <<8;
POS_NEW = (POS_NEW | LOWER);

^^ High-Byte zuweisen, 8 mal nach links verschieben, mit dem Low-Byte bitweise (nicht logisch) verODERn.
Das ist im wesentlichen nichts anderes als das, was der Compiler aus der Multiplikation macht (oder machen sollte).

MfG
Stefan

Edit: ah, hast schon selber was gefunden... das hier dürfte bissle kompakteren Code geben (da die optimierung schon gemacht ist)