Diferencia entre revisiones de «bitshift left»
De ArduWiki
(→Sintaxis) |
(→Parametros) |
||
Línea 9: | Línea 9: | ||
== Parametros == | == Parametros == | ||
− | ; | + | ;variable: Variable o constante a trabajar. Tipo [[int]] o [[long]]. |
− | ;posiciones:Cantidad de posiciones a desplazar. Valores entre 1~32. Tipo [[int]] | + | ;posiciones:Cantidad de posiciones bit a desplazar. Valores entre 1~32. Tipo [[int]] |
== Advertencias == | == Advertencias == |
Revisión del 03:21 5 may 2019
Contenido
Descripción
Desplaza hacia la izquierda (hacia el bit más significativo) una cantidad determinada de bits de una variable o constante; rellenando con ceros.
Sintaxis
variable = variable << posiciones; variable <<= posiciones;
Parametros
- variable
- Variable o constante a trabajar. Tipo int o long.
- posiciones
- Cantidad de posiciones bit a desplazar. Valores 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.
Comentarios
Operacion | Resultado |
---|---|
1 << 0 | 1 |
1 << 1 | 2 |
1 << 2 | 4 |
1 << 8 | 8 |
1 << 8 | 256 |
1 << 9 | 512 |
1 << 10 | 1024 |
Ejemplo 1
int a = B0000000000000101; //5
int b = a << 3 //B0000000000101000 osea 40
int x = B0000000000000101; //5
int y = B0000000000001110; //14
int result = x << y; //B0100000000000000 - el primer bit fue descartado
Ejemplo 2
Presenta manualmente un numero tipo int en binario.
void setup(){
Serial.begin(9600);
int c = 12345;
for (byte bits=7; bits>-1; bits--) {
if (c & (1 << bits)) {
Serial.print("1");
}else {
Serial.print("0");
}
}
}
void loop(){
//Nada
}
Ejemplo 3
Partiendo del valor 1, se puede obtener el resultado de una potencia con base 2.
unsigned long resultado = 1;
void setup(){
for (byte pot=0; pot<sizeof(unsigned long) * 8; pot++) {
Serial.print("2^");
Serial.print(pot);
Serial.print(" = ");
resultado <<= 1; // Se desplaza una vez cada iteración de este ciclo.
Serial.println(resultado);
}
}
void loop(){
//Nada
}
Imprime los resultados desde 2 a la 0 hasta 2 a la 31.
Vea también
- not - (!)
- and - (&&)
- or - (||)
- not bit a bit - (~)
- and bit a bit - (&)
- or bit a bit - (|)
- xor bit a bit - (^)
- bitshift right - (>>)
- EEPROM