Страницы

Translate

суббота, 3 августа 2013 г.

Упражнение 2.7. Напишите функцию invert(х, р, n), возвращающую значение x с инвертированными n битами,

Упражнение 2.7. Напишите функцию invert(х, р, n), возвращающую значение x с инвертированными n битами, начиная с позиции p (остальные биты не изменяются).


#include <stdio.h>

unsigned invert(unsigned int x, int p, int n);

int main()
{
    unsigned int x;
    int p, n;
    
    printf("Enter the number:\nx: ");
    scanf("%d", &x);
    printf("p: ");
    scanf("%d", &p);
    printf("n: ");
    scanf("%d", &n);
    printf("%d\n", invert(x, p, n));
    return 0;
}

/*invert(x, p, n)*/
unsigned invert(unsigned int x, int p, int n)
{
    return x ^ (~(~0<<n)<<(p+1-n));
}

Результат:


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

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