Gegeben ist eine 3-bit große Zahl (0 - 7) und eine Bitmaske der Form 11100000. Ich möchte nun gerne die Zahl in ein Byte einfügen, in dem sich bereits andere Daten befinden (die erhalten bleiben sollen). Die Bitmaske soll angeben, wo die Zahl eingefügt werden soll (dort werden die Daten dann natürlich überschrieben).

Mein bisheriger Ansatz ist es, das Byte mit der invertierten Bitmaske bitweise mit UND zu verknüpfen, um die alten Daten der oberen 3 bits zu löschen, und danach das Byte mit der um 5 nach links geshifteten Zahl mit ODER zu verknüpfen.

Für mich klingt das aber recht ineffizient. Neben 4 Logikoperationen muss ich mir zusätzlich noch den Verschiebungsvektor der Shift-Operation merken, obwohl dieser sich letztlich aus der Bitmaske ergibt.

Hat jemand eine bessere Idee?