Diferencia entre revisiones de «bitshift right»

De ArduWiki
Saltar a: navegación, buscar
(Sintaxis)
(Ejemplo)
Línea 15: Línea 15:
 
* Esta operación desplaza bits descartando los que hayan quedado fuera, no los rota de posición. Por lo tanto, desplazar la cantidad suficiente de bits puede resultar en un valor cero.
 
* Esta operación desplaza bits descartando los que hayan quedado fuera, no los rota de posición. Por lo tanto, desplazar la cantidad suficiente de bits puede resultar en un valor cero.
  
== Ejemplo ==
+
== Ejemplo 1 ==
 +
<syntaxhighlight lang="c++">
 +
int a = 0000000000101000;  //40
 +
int b = a >> 3  //B0000000000000101 osea 5
 +
 
 +
int x = B1111111111110000;  //-16
 +
int y = B0000000000000011;  //3
 +
int result = x >> y;  //B1111111111111110
 +
</syntaxhighlight>
 +
 
 +
== Ejemplo 2 ==
 
Sirve para realizar una división entera con un cociente potencia de base 2
 
Sirve para realizar una división entera con un cociente potencia de base 2
<pre>
+
 
 +
<syntaxhighlight lang="c++">
 
analogWrite(pin, analogRead(A0) >> 2);
 
analogWrite(pin, analogRead(A0) >> 2);
 
// Mucho más rápido que map() o una división.
 
// Mucho más rápido que map() o una división.
</pre>
+
</syntaxhighlight>
 +
 
 
'''analogRead(A0) >> 2''' equivale a '''analogRead(A0) / 4'''
 
'''analogRead(A0) >> 2''' equivale a '''analogRead(A0) / 4'''
  

Revisión del 23:45 25 abr 2019

Descripción

Desplaza hacia la derecha (hacia el bit menos significativo) una cantidad determinada de bits de una variable o constante; rellenando con ceros.

Sintaxis

valor >> posiciones;
valor >>= nBits;

Parámetros

valor
Constante o variable a trabajar. Tipo int o long.
posiciones
Cantidad de posiciones a desplazar. Entre 1~32. Tipo int.

Advertencias

  • Esta operación desplaza bits descartando los que hayan quedado fuera, no los rota de posición. Por lo tanto, desplazar la cantidad suficiente de bits puede resultar en un valor cero.

Ejemplo 1

int a = 0000000000101000;  //40
int b = a >> 3  //B0000000000000101 osea 5

int x = B1111111111110000;  //-16
int y = B0000000000000011;  //3
int result = x >> y;  //B1111111111111110

Ejemplo 2

Sirve para realizar una división entera con un cociente potencia de base 2

analogWrite(pin, analogRead(A0) >> 2);
// Mucho más rápido que map() o una división.

analogRead(A0) >> 2 equivale a analogRead(A0) / 4

Vea también

Referencias