Diferencia entre revisiones de «bitshift right»
De ArduWiki
(→Sintaxis) |
(→Ejemplo 2) |
||
Línea 37: | Línea 37: | ||
'''analogRead(A0) >> 2''' equivale a '''analogRead(A0) / 4''' | '''analogRead(A0) >> 2''' equivale a '''analogRead(A0) / 4''' | ||
+ | |||
+ | == Ejemplo 3 == | ||
+ | Leer y escribir un dato tipo [[int]] osea dos bytes. | ||
+ | |||
+ | <syntaxhighlight lang="c++"> | ||
+ | #include <EEPROM.h> | ||
+ | void setup(){ | ||
+ | //Escribir | ||
+ | int dato = 12345; | ||
+ | EEPROM.write(0, highByte(dato)); //Toma mas significativo | ||
+ | EEPROM.write(1, lowByte(dato)); //Toma menos significativo | ||
+ | //Leer | ||
+ | int val = EEPROM.read(0); | ||
+ | val = val << 8; //Desplaza a la izquierda | ||
+ | val += EEPROM.read(1); | ||
+ | } | ||
+ | |||
+ | void loop(){ | ||
+ | //Nada | ||
+ | } | ||
+ | </syntaxhighlight> | ||
== Vea también == | == Vea también == |
Revisión del 02:59 5 may 2019
Contenido
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 >>= posiciones;
Parámetros
- valor
- Constante o variable a trabajar. Tipo int o long.
- posiciones
- Cantidad de posiciones a desplazar. Entre 1~32. Tipo int.
Retorno
Retorna el numero numero luego del desplazamiento.
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
Ejemplo 3
Leer y escribir un dato tipo int osea dos bytes.
#include <EEPROM.h>
void setup(){
//Escribir
int dato = 12345;
EEPROM.write(0, highByte(dato)); //Toma mas significativo
EEPROM.write(1, lowByte(dato)); //Toma menos significativo
//Leer
int val = EEPROM.read(0);
val = val << 8; //Desplaza a la izquierda
val += EEPROM.read(1);
}
void loop(){
//Nada
}
Vea también
- not - (!)
- and - (&&)
- or - (||)
- not bit a bit - (~)
- and bit a bit - (&)
- or bit a bit - (|)
- xor bit a bit - (^)
- bitshift left - (<<)
- highByte()
- lowByte()
- EEPROM