Menu
Coddy logo textTech

Rotacja bitów liczby II

Lekcja 13 z 17 w kursie Operacje bitowe w Coddy.

Świetnie! Rozumiesz już, co oznacza rotacja. W tym przypadku można jednak spojrzeć na rotację także przez pryzmat operacji przesunięcia. Możemy też powiedzieć, że rotowanie liczby binarnej przypomina wykonywanie na niej operacji przesunięcia, ale zamiast odrzucać bity, umieszczamy je z powrotem w liczbie. Zrozummy to na przykładzie-

Załóżmy, że mamy (33)10 w komputerze 8-bitowym. Jeśli obrócimy tę liczbę w lewo 3 razy, będzie ona przechowywana jako (00100001)2, .

  •  Najpierw przesunęliśmy (33)10 w lewo 3 razy.
  • Aby zachować wysunięte bity, przesunęliśmy ją w prawo 8-3 razy. (8 to liczba bitów, których komputer używa do umieszczenia liczby w pamięci)
  • Następnie wykonaliśmy operację OR na x i y, aby uzyskać obróconą liczbę.
x = 33<<300001000
y = 33>>500000001

x | y

00001001

Podobnie możemy wykonać rotację w prawo-

  • Najpierw przesuniemy (33)10 w prawo 3 razy i zapiszemy tę wartość w zmiennej.
  • Następnie przesuniemy ją w lewo o (8-3) pozycji i zapiszemy tę wartość w innej zmiennej.
  • Potem, wykonując operację OR, otrzymamy obróconą liczbę.
x = 33 >> 300000100
y = 33 << 500100000

x | y

00100100

I to wszystko! Dzięki manipulacjom bitowym możemy tak łatwo obracać bity liczby binarnej.

challenge icon

Wyzwanie

Średni

Uzupełnij funkcję SumLeftRightRotation(), aby zwracała sumę wartości lewego i prawego obrotu podanej liczby. 

Na przykład dla liczby 20 po lewym obrocie otrzymujemy 40, a po prawym obrocie otrzymujemy 10, więc wynikiem będzie 50, czyli suma lewego i prawego obrotu. 

Tutaj num oznacza liczbę, a r oznacza liczbę obrotów.

Spróbuj swoich sił

#define INT_BITS 32
using namespace std;

int SumLeftRightRotation(int num, int r) {
    // Napisz kod tutaj
}

Wszystkie lekcje w sekcji Operacje bitowe

Poćwicz samodzielnie: Kompilator C++ online