Правильно ли решена задача на C++?

Препод дал задание по побитовым операциям, всё ли я верно выполнил? введите сюда описание изображения введите сюда описание изображения

#include <iostream>
 
using namespace std;
int main()
{
    int n, k;
    cout<<"Введите число n, которое будем преобразовывать: ";cin>>n;
    cout<<"Введите количество сдвигов k: ";cin>> k;
  
    for (int i = 0; i < k; i++) {
        if (n % 2 > 0) {
            n = (n >> 1) | 32768;
            continue;
        }
        n = n >> 1;
    }
  
    cout << "Результат перестановки: "<< n;
}

Ответы (1 шт):

Автор решения: Harry

Я бы делал так:

const int bits = 8*sizeof(unsigned int);
unsigned int n, k;
cin >> n >> k;
k %= bits;
n = (n >> k) | (n << (bits-k));

cout << n << endl;
→ Ссылка