Hallo Motze,
z.B.:
01100011
10000100
= 01100100 (Das soll bei Rauskommen)
Hab dein Beispiel etwas abgeändert, damit es besser klar wird. Im oberen
Wert hast du hinten 011 stehen. Du möchtest jetzt nur diese letzten 3
Bits durch die letzen 3 Bits der zweiten Zahl, also 100 ersetzen.
Du brauchst dafür 2 Bit-Masken. Man könnte es bildlich so sagen: Die
eine ist die Stanzmaske und die andere die Füllmaske.
1.) Die Stanzmaske (11111000) schneidet mit Hilfe des Bitoperators "AND"
aus der oberen Binär-Zahl erstmal die letzten 3 Bits raus:
01100011
AND 11111000
= 01100000
Nun hat die obere Zahl bei den letzte 3 Bits quasi ein "Loch", das aus
Nullen besteht. Und zwar genau dort, wo die Stanzmaske auch ihre Nullen
hatte.
2.) Von der zweiten Zahl (10000100) sollen ebenfalls nur die letzten 3
Bits in das oben zuvor ausgestanzte "Loch" eingefügt werden. Dazu stanzt
du jetzt die vorderen 5 Bits der zweiten Zahl weg. Wieder mit dem
AND-Operator und diesmal eben mit den vorderen 5 Nullen der Füllmaske.:
10000100
AND 00000111
= 00000100
Die vorderen 5 Bits sind dadurch wieder zu einem "Loch" aus Nullen
geworden, so dass nur noch die benötigten hinteren 3 Bits der
ursprünglichen Zahl übrig sind.
3.) Jetzt kannst du mit dem Bitoprarator "ODER" bzw. "OR" die beiden
aufeinander genau zugestanzten Werte "zusammenkleben":
01100000
OR 00000100
= 01100100 ==> Dein gewünschtes Ergebnis, das nur die letzten 3 Bits
von der zweiten Zahl auf die letzten 3 bits der ersten Zahl übertragen
hat...