Hilfe bei C-Schulaufgabe

DerD84

Grünschnabel
Hey,

wollte mal fragen, ob mir jemand bei ner Schulaufgabe helfen kann.
folgende aufgabe:

Schreiben Sie ein Programm, das eine Zahl x so verändert, daß die von
der Position p an rechten n Bits von x durch die n am weitesten rechts stehenden Bits einer
Zahl y ersetzt werden. Das am weitesten rechts stehende Bit einer Zahl hat die Position 0.
Programmeingabe: x, y, p, n
Beispiel
Eingabe: p=5,
n=3,
x= 10110111
y= 00011010
Ausgabe: x = 10010111

An sich komm ich mit Bitmanipulationen klar...doch hier find ich den weg einfach nicht!
 
Zuletzt bearbeitet:
Ich würds so angehen

1. aus n eine Maske erstellen

Also
wenn n = 1
dann speicher in eine Variable: 00000001
bei zB. n = 5
Variable: 00011111
Das kannst du zB. per << und | machen

2. nutze die Maske für die Variable y
Das was eingesetzt werden soll = y | maske

dann weißt du bereist, was du in x einsetzen sollt

3. Die Stellen die ersetzt werden sollen mit hilfe der maske auf 0 setzen
x = x | (~maske)

4. per << die bits die eingesetzt werden sollen um p Stellen verschieben

5. zu guter letzt die neuen rein
x = x | das zum einsetzen
 
Zurück