Diferencia entre revisiones de «xor bit a bit»
De ArduWiki
(→Vea también) |
(→Ejemplo 3) |
||
Línea 48: | Línea 48: | ||
== Ejemplo 3 == | == Ejemplo 3 == | ||
− | Parpadea | + | Parpadea el LED a bordo. |
+ | |||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
void setup () { | void setup () { | ||
− | + | DDRB = DDRB | 32; //Configura el pin digital 13 como OUTPUT, no altera el resto. 32=B00100000; | |
− | |||
} | } | ||
void loop () { | void loop () { | ||
− | + | PORTB = PORTB ^ 32; //Invertido estado del bit 5 (pin digital 13), no altera el resto. | |
delay(500); | delay(500); | ||
} | } |
Revisión del 03:35 25 jul 2018
Contenido
Descripción
Es un operador xor bit a bit ^ (or exclusivo) que establece (pone en 1) un bit sí y solo si el bit de esa posición está establecido (en 1) únicamente en uno de los operandos.
a | b | a ^ b |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
Sintaxis
variable1 ^ variable2
- variable1
- primer operando, es la variable (de cualquier tipo) a modificar.
- variable2
- segundo operando, es quien va a relizar las modificaciones pertinentes.
Retorna
El valor resultante, donde cada bit es invertido si así lo dicta el segundo operando.
Advertencias
- No confundir el operador xor bit a bit ^, con el operador boleano xor x.
Comentario
- Este operador se usa a menudo para invertir cada bites (es decir si cambio de 0 a 1, o de 1 a 0) algunos de los bits en una expresión entera. ¡Es como un not bit a bit pero con la posibilidad de ser parcial!
- En una operación OR si hay un 1 en el bit de máscara, el bit se invierte; si hay un 0, el bit se mantiene igual.
Ejemplo 1
byte a = B1100;
byte b = B1010;
a ^ b; //0110
Ejemplo 2
byte b = 55;
b ^= b; // Así es como en lenguaje máquina se reestablece una variable a cero
b = 55;
b ^= ~b; // Así es como en lenguaje máquina se reestablece una variable a su máximo valor (-1 si es con signo)
Ejemplo 3
Parpadea el LED a bordo.
void setup () {
DDRB = DDRB | 32; //Configura el pin digital 13 como OUTPUT, no altera el resto. 32=B00100000;
}
void loop () {
PORTB = PORTB ^ 32; //Invertido estado del bit 5 (pin digital 13), no altera el resto.
delay(500);
}
Vea también
- not (!)
- and (&&)
- or (||)
- xor (^)
- not bit a bit (~)
- and bit a bit (&)
- or bit a bit (|)
- bitshift right (>>)
- bitshift left (<<)