Witam. Mam drobny problem. Poniżej jest kod sprawdzający po którym przesunięciu bitów w prawo liczby 30-bitowej uzyskamy największą liczbę. Jak dla mnie działa on dobrze ale ponoć jest w nim jakiś błąd. Proszę o wskazanie tego błędu. Z góry dziękuję.
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
int N;
cin >> N;
int lar = 0;
int shift = 0;
int temp = N;
for (int i = 1; i < 30; i++)
{
int index = (temp & 1);
temp = ((temp >> 1) | (index << 29));
if (temp > lar)
{
lar = temp;
shift = i;
}
}
return shift;
}