задание: установить в числе x n битов начиная с позиции p равными крайним n битам числа y. Пример: x = 1110 0010 1100 p = 7 n = 4 y = 1100 1010 1101 результат должен быть таков 1110 1101 1100 Единственно до чего я додумался это: 1. в числе x нужные n бит сделать единичными 2. получить число вида 111 [n бит из числа y] 1111 3. первое & второе вот как я это смог реализовать вот функция которая реализует эти три шага Code: unsigned setbits(unsigned x, int p, int n, unsigned y) { unsigned first = x | ~(~0<<(p+1) | ~(~0<<(p+1-n))); unsigned second = ((y | (~0<<n))<<(p + 1 - n)) | ~(~0<<(p + 1 - n)); return first & second; } я уверен есть решение проще, просто я его не могу найти.