Menu
Coddy logo textTech

Operatori di shift a destra e a sinistra

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

Gli operatori di shift vengono usati per spostare i bit verso sinistra o verso destra. 

Operatore di shift a destra ( >> )

Prende due operandi. Il primo valore è il numero i cui bit vogliamo spostare verso destra e il secondo operando indica di quante posizioni vogliamo spostarli. In pratica inseriamo degli zeri dal lato MSB del numero nel numero binario.

Lo shift a destra è indicato con '>>' . 

Lo shift a destra equivale a dividere il numero per una potenza di due. Vediamolo con un esempio.

Abbiamo preso (11)10 e lo abbiamo spostato verso destra di 3 posizioni, ottenendo (1)10 come output. Possiamo calcolarlo anche prendendo la parte intera di (11 / 23), che non è altro che (1)10.  

Utilizzo:

int a = 11;
a>>3;
OUTPUT: 1

Qui a è il numero i cui bit devono essere spostati e 3 è il numero di posizioni verso destra di cui spostare il numero dato.

Operatore di shift a sinistra ( << )

Prende anch'esso due operandi. Il primo operando è il numero i cui bit vogliamo spostare verso sinistra e il secondo operando indica di quante posizioni vogliamo spostarli. In pratica inseriamo degli zeri dal lato LSB del numero. Lo shift a sinistra è indicato con '<<' . Lo shift a sinistra equivale a moltiplicare il numero per una potenza di due. Vediamolo con lo stesso esempio.

Abbiamo preso (11)10 e lo abbiamo spostato verso destra di 3 posizioni, ottenendo (88)10 come output. Possiamo calcolarlo anche moltiplicando (11)10 per 23, ottenendo (88)10. Nota che in questo caso non possiamo rimuovere l'MSB: lo shift a sinistra aumenta il numero di bit e inserisce zeri dal lato LSB, ma non rimuove i bit MSB. Nel caso dello shift a destra, invece, inseriamo zeri dal lato MSB e i bit a sinistra vengono semplicemente omessi.

Utilizzo:

int a = 11;
a<<3;
OUTPUT: 88
challenge icon

Sfida

Facile

Raddoppia il numero dato (l'input) usando gli operatori di shift.

Provalo tu

#include <iostream>
#include <vector>
using namespace std;

int Double(int num) {
    // Scrivi il codice qui
}

Tutte le lezioni di Manipolazione dei bit

Esercitati da solo: Compilatore C++ online