Menu
Coddy logo textTech

Rotazione dei bit di un numero II

Lezione 13 di 17 del corso Manipolazione dei bit di Coddy.

Bene! Hai capito cosa significa rotazione. Ma in questo caso la rotazione si può anche considerare utilizzando le operazioni di shift. Possiamo anche dire che ruotare un numero binario è come eseguire un'operazione di shift su di esso, ma invece di scartare i bit li reinseriamo nel numero. Vediamo un esempio-

Supponiamo di avere (33)10 in un computer a 8 bit. Verrà memorizzato come (00100001)2, e supponiamo di ruotarlo verso sinistra 3 volte.

  •  Per prima cosa abbiamo eseguito lo shift a sinistra di (33)10 3 volte.
  • E per salvare i bit rimasti fuori, abbiamo eseguito lo shift a destra 8-3 volte. (8 è il numero di bit che il computer usa per collocare il numero in memoria)
  • Poi abbiamo eseguito l'operazione OR su x e y per ottenere il numero ruotato.
x = 33<<300001000
y = 33>>500000001

x | y

00001001

Allo stesso modo possiamo eseguire una rotazione a destra-

  • Per prima cosa sposteremo (33)10 verso destra 3 volte e salveremo quel valore in una variabile.
  • Poi eseguiremo lo shift a sinistra per (8-3) volte e salveremo quel valore in un'altra variabile.
  • Poi, eseguendo l'operazione OR, otterremo il numero ruotato.
x = 33 >> 300000100
y = 33 << 500100000

x | y

00100100

Ecco fatto! Grazie alla manipolazione dei bit, possiamo ruotare i bit di un numero binario così facilmente.

challenge icon

Sfida

Medio

Completa la funzione SumLeftRightRotation() per restituire la somma dei valori della rotazione a sinistra e della rotazione a destra del numero dato. 

Ad esempio, per il numero 20, dopo la rotazione a sinistra si ottiene 40 e dopo la rotazione a destra si ottiene 10, quindi l'output sarà 50, la somma delle rotazioni a sinistra e a destra. 

Qui, num rappresenta il numero e r rappresenta il numero di rotazioni.

Provalo tu

#define INT_BITS 32
using namespace std;

int SumLeftRightRotation(int num, int r) {
    // Scrivi il codice qui
}

Tutte le lezioni di Manipolazione dei bit

Esercitati da solo: Compilatore C++ online