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

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

Напишите функцию rightrot(х, n), которая циклически сдвигает x вправо на n разрядов.
#include <stdio.h>

unsigned rightrot(unsigned x, unsigned n);

int main(void)
{
    unsigned x;
    int n;

    for(x = 0; x < 700; x = x + 49)
        for(n = 1; n < 8; n++)

            printf("%u, %d: %u\n", x, n, rightrot(x, n));

    return 0;
}

unsigned rightrot(unsigned x, unsigned n)
{
    while (n > 0)
    {
        if ((x & 1) == 1)
            x = (x >> 1) | ~(~0U >> 1);
        else
            x = (x >> 1);
        n--;
    }

    return x;
}

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

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