Вращающиеся биты любого целого числа в C
Передайте целое число 2 в эту функцию, а затем верните целое число, равное 4
x = 2;
x = rotateInt('L', x, 1);
(сдвиг влево битов на 1)
Пример: 00000010 -> повернуть влево на 1 -> 00000100
но если я передам это:
x = rotateInt('R', x, 3);
вернется 64, 01000000
Вот код, может кто-нибудь исправить ошибку ... спасибо
int rotateInt(char direction, unsigned int x, int y)
{
unsigned int mask = 0;
int num = 0, result = 0;
int i;
for (i = 0; i < y; i++)
{
if (direction == 'R')
{
if ((x & 1) == 1)
x = (x ^ 129);
else
x = x >> 1;
}
else if (direction == 'L')
{
if ((x & 128) == 1)
x = (x ^ 129);
else
x = x << 1;
}
}
result = (result ^ x);
return result;
}