Diferencia entre revisiones de «or bit a bit compuesto»

De ArduWiki
Saltar a: navegación, buscar
(Descripción)
 
(No se muestran 15 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
 
== Descripción ==
 
== Descripción ==
El operador '''OR bit a bit compuesto''' (|=) se usa a menudo con una variable y una constante para "set" (puesta a 1) de determinados bits en una variable.
+
El operador '''OR bit a bit compuesto''' (|=) se usa para forzar cierto bit de una variable a 1 (HIGH).
 +
 
 +
{| class="wikitable col3cen"
 +
!a!!b!!a <nowiki>|=</nowiki> b
 +
|-
 +
|0||0||0
 +
|-
 +
|1||0||1
 +
|-
 +
|0||1||1
 +
|-
 +
|1||1||1
 +
|}
 +
 
 +
{{Nota|A menudo se hace referencia en las guías de programación como "puesta a 1" (SET) de bits.}}
  
 
== Sintaxis ==
 
== Sintaxis ==
 
<pre>
 
<pre>
x |= y;   //Equivalente a: x = x | y;  
+
variable |= mascara;
 +
variable = variable | mascara;  
 
</pre>
 
</pre>
  
 
== Parámetros ==
 
== Parámetros ==
;x: variable. Puede ser tipo: [[char]], [[byte]],  [[int]] o [[long]]  
+
;variable: Nombre de la variable a operar. Puede ser tipo: [[char]], [[byte]],  [[int]] o [[long]]  
;y: constante entera o mascara. Puede ser tipo: [[char]], [[byte]], [[int]] o [[long]]
+
;mascara: constante entera. Puede ser tipo: [[char]], [[byte]], [[int]] o [[long]]
  
 
== Retorno ==
 
== Retorno ==
* Los bits tratados [[OR bit a bit]] con 0 no se modifican.
+
* Los bits tratados con 0 no se modifican. Mantienen su estado.
* Los bits tratados [[OR bit a bit]] con 1 se ponen a 1, sin importar su estado.
+
* Los bits tratados con 1 se ponen a 1, sin importar su estado.
 
   
 
   
 +
== Comentarios ==
 +
debido a que se trata de bits de un operador de bits - es conveniente usar el formateador binario con constantes. Las cifras siguen siendo el mismo valor en otras representaciones, que simplemente no son tan fáciles de entender. Además, B00000000 se muestra por claridad, pero cero en cualquier formato de número es cero.
 +
 
== Advertencias ==
 
== Advertencias ==
 
Nada.
 
Nada.
  
 
== Ejemplo 1 ==
 
== Ejemplo 1 ==
Para configurar los bits 0 (menos significativo) y 1 de una variable, dejando el resto de la variable sin cambios, use el operador '''OR bit a bit compuesto''' (| =) con la constante B00000011
+
Para configurar los bits 0 (menos significativo) y 1 de una variable, dejando el resto de la variable sin cambios, use el operador '''OR bit a bit compuesto''' (| =) con la constante B00000011.
 
 
Bxxxxxxxx    variable 
 
B00000011    máscara
 
--------
 
Bxxxxxx11
 
  
 
<syntaxhighlight lang="c++">
 
<syntaxhighlight lang="c++">
 
byte a = B10101010;
 
byte a = B10101010;
 
a |= B00000011;      //B10101011
 
a |= B00000011;      //B10101011
 +
</syntaxhighlight>
 +
 +
{|class="wikitable"
 +
|Variable||Bxxxxxxxx 
 +
|-
 +
|Mascara||B00000011
 +
|-
 +
|Resultado||Bxxxxxx11
 +
|}
 +
 +
== Ejemplo 2 ==
 +
<syntaxhighlight lang="c++">
 +
void setup() {
 +
  Serial.begin(9600);
 +
  int z,n = 12345;
 +
  byte val1 = highByte(n);
 +
  byte val2 = lowByte(n);
 +
  z = val1;  //Tomamos MSB
 +
  z <<= 8;    //Desplazamos 8 bits a la izquierda
 +
  z |= val2;  //Añadimos LSB}
 +
  Serial.println(z);
 +
}
 +
void loop(){
 +
  //Nada
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
== Vea también ==
 
== Vea también ==
* [[incremento]]
+
* [[incremento]] <nowiki>(++)</nowiki>
* [[decremento]]
+
* [[decremento]] <nowiki>(--)</nowiki>
* [[suma compuesta]]
+
* [[suma compuesta]] <nowiki>(+=)</nowiki>
* [[resta compuesta]]
+
* [[resta compuesta]] <nowiki>(-=)</nowiki>
* [[multiplicacion compuesta]]
+
* [[multiplicacion compuesta]] <nowiki>(*=)</nowiki>
* [[modulo compuesto]]
+
* [[division compuesta]] <nowiki>(/=)</nowiki>
 +
* [[modulo compuesto]] <nowiki>(%=)</nowiki>
 +
<categorytree mode=all>Operador bit a bit compuesto</categorytree>
 +
<categorytree mode=all>Funciones bit y byte</categorytree>
  
== Referencias ==
+
== Referencias externas ==
 
* [https://manueldelgadocrespo.blogspot.com/p/or-bit-bit-compuesto.html Manuel Delgado Crespo]
 
* [https://manueldelgadocrespo.blogspot.com/p/or-bit-bit-compuesto.html Manuel Delgado Crespo]
  
[[Category:Estructura]]
+
[[Category:Operador bit a bit compuesto]]

Revisión actual del 00:06 27 sep 2019

Descripción

El operador OR bit a bit compuesto (|=) se usa para forzar cierto bit de una variable a 1 (HIGH).

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

Nota: A menudo se hace referencia en las guías de programación como "puesta a 1" (SET) de bits.


Sintaxis

variable |= mascara;
variable = variable | mascara; 

Parámetros

variable
Nombre de la variable a operar. Puede ser tipo: char, byte, int o long
mascara
constante entera. Puede ser tipo: char, byte, int o long

Retorno

  • Los bits tratados con 0 no se modifican. Mantienen su estado.
  • Los bits tratados con 1 se ponen a 1, sin importar su estado.

Comentarios

debido a que se trata de bits de un operador de bits - es conveniente usar el formateador binario con constantes. Las cifras siguen siendo el mismo valor en otras representaciones, que simplemente no son tan fáciles de entender. Además, B00000000 se muestra por claridad, pero cero en cualquier formato de número es cero.

Advertencias

Nada.

Ejemplo 1

Para configurar los bits 0 (menos significativo) y 1 de una variable, dejando el resto de la variable sin cambios, use el operador OR bit a bit compuesto (| =) con la constante B00000011.

byte a = B10101010;
a |= B00000011;      //B10101011
Variable Bxxxxxxxx
Mascara B00000011
Resultado Bxxxxxx11

Ejemplo 2

void setup() {
   Serial.begin(9600);
   int z,n = 12345;
   byte val1 = highByte(n);
   byte val2 = lowByte(n);
   z = val1;   //Tomamos MSB
   z <<= 8;    //Desplazamos 8 bits a la izquierda
   z |= val2;  //Añadimos LSB}
   Serial.println(z);
}
void loop(){
   //Nada
}

Vea también


Referencias externas