>> Desplazamiento de bit a la derecha

Descripción

Hay dos operadores de desplazamiento de bits en C++: el operador de desplazamiento a la izquierda << y el operador de desplazamiento a la derecha >>.

El operador de desplazamiento a la derechas hacen que los bits del operando de la izquierda se desplacen a hacia la derecha el número de posiciones especificadas por el operando de la derecha.

Sintaxis

>> variable number_of_bits

Parámetros

  • variable: (byte, int, long)
  • number_of_bits: entero ≤ 32

Ejemplo

int a = 40; // Binario: 0000000000101000, o 40 en decimal int b = a >> 3; // Binario: 0000000000000101, o de nuevo a 5 como empezamos

※ Nota:

Cuando se cambia x por y derecha los bits (x >> y), y el bit más alto de x es un 1, el comportamiento depende del tipo de datos exacto de x. Si x es de tipo int, el bit más alto es el bit de signo, la determinación de si x es negativo o no, como hemos comentado anteriormente. En ese caso, el bit de signo se copia en los bits inferiores, por razones históricas:

int x = -16; // Binario: 1111111111110000 int y = 3; int result = x >> y; // Binario: 1111111111111110

Este comportamiento, denominado extensión de signo, a menudo no es el comportamiento que deseamos. En lugar de ello, es posible que deseemos los ceros que se arrastran de la izquierda. Resulta que las reglas de desplazamiento a la derecha son diferentes para las expresiones int sin signo, por lo que puede utilizar un cambio de tipo (typecast) para suprimir lo que se está copiando desde la izquierda:

int x = -16; // Binario: 1111111111110000 int y = 3; int result = (unsigned int)x >> y; // Binario: 0001111111111110

Si usted tiene cuidado para evitar la extensión de signo, se puede utilizar el operador de desplazamiento a la derecha >> como una manera de dividir por potencias de 2. Por ejemplo:

int x = 1000; int y = x >> 3; // División entera de 1000 por 8, haciendo que y = 125., haciendo que y = 125.

ARDUINO BUY RECOMMENDATION

Arduino UNO R3
Arduino Starter Kit
Please note: These are Amazon affiliate links. If you buy the components through these links, We will get a commission at no extra cost to you. We appreciate it.

※ OUR MESSAGES