Diferencia entre revisiones de «or bit a bit»

De ArduWiki
Saltar a: navegación, buscar
(Descripción)
(Referencias)
 
(No se muestran 13 ediciones intermedias de 2 usuarios)
Línea 1: Línea 1:
 
== Descripción ==
 
== Descripción ==
El operador binario '''OR bit a bit''' es representado por el caracter tilde ~. OR opera sobre el numero a su derecha cambiando cada bit a su valor opuesto, es decir: cada 0 se convierte en 1 y 1 se convierte en 0.
+
El operador binario '''OR bit a bit''' es representado por el carácter barra <nowiki>|</nowiki>. OR establece (pone en 1) un bit sí y solo si el bit de esa posición está establecido (en 1) en al menos uno de los operandos.  
  
{| class="wikitable col2cen"
+
{| class="wikitable col3cen"
!a!!b!!<nowiki>&</nowiki>a
+
!a!!b!!a <nowiki>|</nowiki> b
 
|-
 
|-
 
||0||0||0
 
||0||0||0
Línea 13: Línea 13:
 
||1||1||1
 
||1||1||1
 
|}
 
|}
 +
{{Nota|Esta operación también es usada para establecer (poner en uno) uno o varios bits específicos en una variable. Todo bit en 1 en el segundo operando, se establecerá; mientras que todo bit en cero se se quedará como está.}}
  
 
== Sintaxis ==
 
== Sintaxis ==
 
<pre>
 
<pre>
 +
op1 | op2
 
</pre>
 
</pre>
 +
 +
;op1: primer operando, es la variable (de cualquier tipo) a modificar.
 +
;op2: segundo operando, es quien va a relizar las modificaciones pertinentes.
  
 
== Retorno ==
 
== Retorno ==
Nada.
+
El valor resultante, donde cada bit se establece sólo si lo está en al menos uno de los operandos.  
  
 
== Advertencias ==
 
== Advertencias ==
* No confundir el operador bit a bit not con el boleano [[not] nowiki>!</nowiki>
+
* No confundir este operador '''OR  bit a bit''' <nowiki>|</nowiki> con el boleano [[or]] <nowiki>||</nowiki>
 +
* Idealmente ambos operandos deberían ser del mismo tipo (tamaño); en caso de no ser así, solo se operará con los bytes menos significativos del más grande.
  
 
== Ejemplo ==
 
== Ejemplo ==
<pre>
+
<syntaxhighlight lang="c++">
byte a = B11110000;
+
byte var = 1;
byte b = ~a; //B00001111
+
var |= B00000110;           //Ahora var vale 7 debido a que establecí esos bits
int a = 103; //B0000000001100111 = 103
+
</syntaxhighlight>
int b = ~ a; //B1111111110011000 = -104
 
x = ~ x; // alternar todos los bits en x y almacenar de nuevo en x
 
</pre>
 
  
 
== Vea también ==
 
== Vea también ==
* [[and]]
+
* [[not]] <nowiki>(!)</nowiki>
* [[or]]
+
* [[and]] <nowiki>(&&)</nowiki>
* [[not bit a bit]]
+
* [[or]] <nowiki>(||)</nowiki>
* [[and bit a bit]]
+
* [[not bit a bit]] <nowiki>(~)</nowiki>
 +
* [[and bit a bit]] <nowiki>(&)</nowiki>
 +
* [[xor bit a bit]] <nowiki>(^)</nowiki>
 +
* [[bitshift right]] <nowiki>(>>)</nowiki>
 +
* [[bitshift left]] <nowiki>(<<)</nowiki>
 +
<categorytree mode=all>Funciones bit y byte</categorytree>
  
 
== Referencias ==
 
== Referencias ==
 
* [https://www.arduino.cc/reference/es/language/functions/time/millis/ Guia de referencia de Arduino]
 
* [https://www.arduino.cc/reference/es/language/functions/time/millis/ Guia de referencia de Arduino]
 +
* [https://playground.arduino.cc/Code/BitMath/#bitwise_or Bitwise OR] - Playgroubd
  
[[Category:Estructura]]
+
[[Category:Operador bit a bit]]

Revisión actual del 23:26 26 sep 2019

Descripción

El operador binario OR bit a bit es representado por el carácter barra |. OR establece (pone en 1) un bit sí y solo si el bit de esa posición está establecido (en 1) en al menos uno de los operandos.

a b a | b
0 0 0
0 1 0
1 0 0
1 1 1

Nota: Esta operación también es usada para establecer (poner en uno) uno o varios bits específicos en una variable. Todo bit en 1 en el segundo operando, se establecerá; mientras que todo bit en cero se se quedará como está.


Sintaxis

op1 | op2
op1
primer operando, es la variable (de cualquier tipo) a modificar.
op2
segundo operando, es quien va a relizar las modificaciones pertinentes.

Retorno

El valor resultante, donde cada bit se establece sólo si lo está en al menos uno de los operandos.

Advertencias

  • No confundir este operador OR bit a bit | con el boleano or ||
  • Idealmente ambos operandos deberían ser del mismo tipo (tamaño); en caso de no ser así, solo se operará con los bytes menos significativos del más grande.

Ejemplo

byte var = 1;
var |= B00000110;           //Ahora var vale 7 debido a que establecí esos bits

Vea también


Referencias