Битовые операции, циклический сдвиг - 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)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д