Compartir a través de


Operadores de cambio bit a bit

Los operadores de cambio se desplazan el primer operando está (<<) o derecho (>>) por el número de posiciones el segundo operando especifica.

Sintaxis

  • MAYÚS-expresión:
    añadido-expresión

    añadido-expresión de>>de la MAYÚS- expresión de la añadido-expresión de <<de la MAYÚS-expresión

ambos operandos deben ser valores enteros.Estos operadores realizan conversiones aritméticas usuales; el tipo del resultado es el tipo del operando izquierdo después de conversión.

Para hacia la izquierda los cambios, los bits correctos desocupados se establecen en 0.Para hacia la derecha los cambios, se rellenan los bits izquierdo desocupados según el tipo del primer operando después de la conversión.Si el tipo es unsigned, se establecen en 0.Si no, se rellenan con copias de bit de signo.Para los operadores de izquierdo-MAYÚS sin desbordamiento, la instrucción

expr1 << expr2 

es equivalente a la multiplicación por 2.expr2Para los operadores de derecho-MAYÚS,

expr1 >> expr2 

es equivalente a la división por 2expr2 si expr1 es sin signo o tiene un valor no negativo.

El resultado de una operación de cambio es indefinido si el segundo operando es negativo, o si el operando derecho es mayor o igual que el ancho en bits de operando izquierdo ascendido.

Dado que las conversiones realizadas por los operadores de cambio no preven condiciones de desbordamiento o subdesbordamiento de, la información puede ser pierden si el resultado de una operación de cambio no se puede representar en el tipo del primer operando después de la conversión.

unsigned int x, y, z;

x = 0x00AA;
y = 0x5500;

z = ( x << 8 ) + ( y >> 8 );

En este ejemplo, x se desplazará a la izquierda ocho posiciones y y es posiciones desplazadas de la derecha ocho.los valores desplazados se agregan, dando 0xAA55, y se asignan a z.

Mover un valor negativo a la derecha hace la mitad del valor original, redondeado a continuación.Por ejemplo, – (binario 11111111 00000011) el bit desplazado de la derecha 253 producen – 127 (binario 11111111 10000001).Cambia un positivo 253 derecha para generar +126.

los cambios de la derecha conservan el bit de signo.Cuando los cambios enteros con signo derecha, el bit más significativo permanece conjunto.Cuando un entero sin signo desplaza la derecha, se desactiva el bit más significativo.

Vea también

Referencia

Operadores de cambio: >> y <<