Битовые операции, циклический сдвиг - C (СИ)

Узнай цену своей работы

Формулировка задачи:

в принципе идея понятна, двигаемся (в моем примере против часовой) битами в лево, те что пропадают слева, появляются справо. однако никак не работает корректно, видно что число упирается в 32 разряда единиц и встает, хотя вроде бы функция правильна прошу совета
int main()
{
 
  int x = 43775; //1010 1010 1111 1111
  int n = 2;
  for(int i = 0; i<12; i++){
  printf("%u\n", x = rightrot(x,n));
    }
  return 0;
}
int rightrot (int x, int n)
{
  //int pt1,pt2;                    <===== разложение операции ретерна
  //pt1 = x<<n;
  //pt2 = x>>(sizeof(x)*8 - n);
  //pt1|pt2;
 
return (x<<n)|x>>(sizeof(x)*8 - n);
}

Решение задачи: «Битовые операции, циклический сдвиг»

textual
Листинг программы
int rightrot (unsigned x, int n)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.333 из 5
Похожие ответы