Ich wollte dann doch mal irgendwann die Sprache der Sprachen erlernen und beschäftige mich gerade mit Bit-Manipulation.
Ziel ist es, eine Funktion zu schreiben, die n Bits am Position p aus x durch die letzten n Bits in y ersetzt.
So sieht's bis jetzt aus:
Code: Select all
unsigned setbits(unsigned int x, int n, int p, unsigned int y){
unsigned int mask;
/* Zahl: 01001001
* Position: 76543210
* liefert n Bits von y ab 0
* Erzeugt dann eine Bitmaske mit allen Bits auf 0
* außer den ersten n, welche denen in y entsprechen.
*/
mask = ( y & ~(~0 << n));
/* Schiebt p Bits gleich 0 nach */
mask << p;
return x & mask;
}
mask << p;
bezieht.
Kann mir jemand das erklären?