Przesniecie/obrot bitow w prawo

Siema,

mozecie prosze sprawdzic ponizszy kod napisany w c++ - mam problem, bo dobrze bity sie wyswietlaja, jednak nie obracaja sie i nie przesuwaja w prawo… Zamieszczam ponizej dwie funkcje:

Znalazlem rowniez inny kod, ktoreg niestety nie potrafilem uzyc :frowning:

tl;dr

Przesunięcie w prawo robi się operatorem >> np. y = x >> n; przesunie x o n bitów w prawo i zapisze wynik w y.

Można też użyć >>= np. x >>= n; przsunie x o n bitów w prawo i zapisze wynik w x.

Do obrotów bitowych nie ma operaora ale można go złóżyć z dwóch przesunięć np. y = (x >> n) | (x << (32 - n)); obróci x o n bitów w prawo i wynik zapisze w y. 32 to rozmiar inta w bitach.

Przy operacjach na bitach lepiej uzywać unsigned inta niz zwykłego inta. I pamiętaj żeby n nie było większe od liczby bitów zmiennej.

Podobnie robisz przy przesunięciach i obrotach w lewo. To nie ma prawa nie działać(no chyba, że odłączysz zasilanie :P).

PS. Wyświetlanie bitów:

for(int i = 31; i >= 0; --i)

	cout << ((x >> i) & 1);

Dzieki Rolek,

jestem ci dluzny DUZE piwo :wink:

nie wiem jak to moglo nie dzialac??!

Teraz jest super dzieki jeszcze raz…

Ostatnie pytanie -masz moze jakis pomysl jak mozna to zadanie rozwiazac uzywajac masek “mask”?