среда, 19 ноября 2014 г.

Упражнение 2.7.

Напишите функцию 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;
}

Комментариев нет:

Отправить комментарий