[C con Clase] Para que sirve esta notación?? ^=

Steven Davidson srd4121 en njit.edu
Vie Oct 8 07:50:21 CEST 2010


Hola Miguel,

On 10/8/2010 1:41 AM, Miguel Olave wrote:
> Esop!!
>
> He buscado pero no encuentro que hace esta notación:
>
> i ^= 1;
>
> hice un pequeño programa para ver si lo descubria pero no "me o
> entender"
>
> #include <stdio.h>
>
> int main(){
> int i=0, z=1, j;
>
> for(j=0;i<10;i++){
> i ^= 1;
> z ^= 1;
> printf("i:%d, z:%d\n",i,z);
> }
> }
> Resultado:
> i:1, z:0
> i:3, z:1
> i:5, z:0
> i:7, z:1
> i:9, z:0
>
> Demás que alguien sabe y puede decirme en un par de líneas sin perder
> mucho tiempo.
>

El operador ^= es el equivalente a hacer dos operaciones: ^ (XOR: OR 
eXclusivo) y = (asignación). Para información acerca del operador ^, 
consulta el capítulo 18 de nuestro curso de C++: 
http://c.conclase.net/curso/index.php?cap=018#inicio

Brevemente, este operador es a nivel de bits. Te doy la tabla de verdad, 
pero con bits, para entender esta operación:

  A | B | A ^ B
---+---+-------
  0 | 0 |   0
  1 | 0 |   1
  0 | 1 |   1
  1 | 1 |   0

Si ambos bits son iguales, entonces el resultado es 0; de lo contrario, 
es 1.


Espero haber aclarado el asunto.

Steven





Más información sobre la lista de distribución Cconclase