Напишите функцию invert(х, р, n), возвращающую значение x с инвертированными n битами, начиная с позиции p (остальные биты не изменяются).
#include <stdio.h>
unsigned invert(unsigned x, int p, int n);
int main(void)
{
printf("%u\n", invert(125, 4, 2));
return 0;
}
unsigned invert(unsigned x, int p, int n)
{
/* Подготовка необходимой маски для инверсии битового поля */
unsigned mask = ~(~0U << n) << (p + 1 - n);
/* Выполнение инверсии значения по найденной ранее маске */
return x ^ mask;
}
Комментариев нет:
Отправить комментарий