Operadores de cambio: >> y <<
expression << expression
expression >> expression
Comentarios
Los operadores de desplazamiento bit a bit son los siguientes:
Desplazamiento a la derecha (>>)
Desplazamiento a la izquierda (<<)
Los dos operandos de los operadores de desplazamiento deben ser de tipos integrales.Promociones integrales se realizan de acuerdo con las reglas descritas en Promociones enteras.El tipo del resultado es el mismo que el tipo del operando izquierdo promovido.El valor de una expresión de desplazamiento a la derecha x >> y es x / 2yy el valor de una expresión de MAYÚS izquierda x << y is x * 2y.
El resultado es indefinido si el operando derecho de una expresión de cambio es negativo o si el operando derecho es mayor o igual al número de bits en el operando izquierdo (promover).Si el operando derecho es cero (0), se realiza ninguna operación de cambio.
El operador de desplazamiento izquierda hace que el modelo de bits en el primer operando a se desplaza a la izquierda el número de bits especificado por el segundo operando.Anulado por la operación de desplazamiento de bits son rellenan con ceros.Se trata de un desplazamiento lógico en lugar de una operación de cambio y girar.
El operador de desplazamiento a la derecha hace que el modelo de bits en el primer operando a se desplaza a la derecha el número de bits especificado por el segundo operando.Anulado por la operación de desplazamiento de bits son rellenan con ceros para cantidades sin signo.Las cantidades con signo, el bit de signo se propaga a las posiciones de bit vacías.El desplazamiento es un desplazamiento lógico si el operando izquierdo es una cantidad sin signo; de lo contrario, es un desplazamiento aritmético.
Específicos de Microsoft
El resultado de un desplazamiento a la derecha de una cantidad negativa firmado es dependiente de la implementación.Aunque MicrosoftC++ se propaga el bit más significativo para rellenar las posiciones de bit vacías, no hay ninguna garantía de que otras implementaciones también hará.
Ejemplo
// expre_Shift_Operators.cpp
// compile with: /EHsc
// Demonstrate shift operators
#include <iostream>
using namespace std;
int main() {
cout << "5 times 2 is " << (5 << 1) << endl
<< "20 divided by 4 is " << (20 >> 2) << endl;
}
Output
Vea también
Referencia
Expresiones con operadores binarios
Operador Prioridad y Asociatividad