У меня есть проблема, которую я не могу решить.Код ниже должен получить число от пользователя и количество поворотов.Код должен рассчитывать число после поворотов.Для отрицательного числа вращений код должен поворачивать число влево, а для положительного числа вращений код должен поворачивать число вправо.
Например: для входа x = 1010111011111011
my_rotate (x, -3) вернет 0111010111011111 my_rotate (x, 3) вернет 0111011111011101
Вот код, который я написал до сих пор:
#include <stdio.h>
unsigned short my_rotate(unsigned short, char);
int main()
{
unsigned short num, res;
char rotations;
printf("\nPlease enter a number and number of rotations\n");
scanf("%hu %d", &num, &rotations);
res = my_rotate(num, rotations);
return 0;
}
unsigned short my_rotate(unsigned short a, char b)
{
unsigned short bitsNum = sizeof(unsigned short) * 8;
unsigned short temp1, temp2, result;
if(b == 0)
return a;
else if(b < 0)
{
temp1 = a << (bitsNum + b);
temp2 = a >> (-b);
result = temp1 + temp2;
}
else /* b > 0 */
{
temp1 = (a >> (bitsNum - (unsigned short)b));
temp2 = (a << (unsigned short)b);
result = temp1 + temp2;
}
return result;
}
Я всегда получаю 0 в результате, и я нене знаю почему.Что не так с моим кодом?