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<<3 | 00001000 |
| y = 33>>5 | 00000001 |
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 >> 3 | 00000100 |
| y = 33 << 5 | 00100000 |
x | y | 00100100 |
Ecco fatto! Grazie alla manipolazione dei bit, possiamo ruotare i bit di un numero binario così facilmente.
Sfida
MedioCompleta 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
2Algoritmi sui bit
Potenza di 2Numero che ricorre un numero dispari di volteNumero di bit impostatiRotazione dei bit di un numero IRotazione dei bit di un numero IIEsercitati da solo: Compilatore C++ online