Циклический побитовый сдвиг числа вправо на указанное количество бит, но только для нечетных битов - C (СИ)
Формулировка задачи:
Реализовать циклический побитный сдвиг числа вправо на указанное число(n), но только для нечетных битов
Условия:
Реализация задания в отдельной функции
Корректность работы реализованной функции с целыми числами различных типов (char, int, unsigned, long)
Помогите
Решение задачи: «Циклический побитовый сдвиг числа вправо на указанное количество бит, но только для нечетных битов»
textual
Листинг программы
#include <stdio.h>
typedef unsigned char byte;
byte rotate_right(byte x, byte n)
{
return (x >> n) | (x << 8*sizeof(x)-n);
}
byte rotate_odd_right(byte x, byte n)
{
return rotate_right(x & 0x55, 2*n) | (x & 0xAA);
}
int main()
{
byte x = 73;
printf("%d\n", rotate_odd_right(x, 2));
}