Autor Tema: Significado de ^=  (Leído 4265 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Significado de ^=
« en: 05 de Marzo de 2008, 23:15:52 »
Hola

Leyendo un programa me encuentro con:

Código: [Seleccionar]
int whichfb;
...
whichfb ^= 1;

¿Qué significa la última línea?  :z)

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Significado de ^=
« Respuesta #1 en: 05 de Marzo de 2008, 23:28:01 »
simil: wichfb = wichfb XOR 1;
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Significado de ^=
« Respuesta #2 en: 05 de Marzo de 2008, 23:32:41 »
mmhh ya veo

Ahora entiendo, es un inversor de bits  :mrgreen: Lo chistoso es que como la variable no es bool no puede usarse

whichfb++;

para invertirla.

Gracias Bruno.

microlost

  • Visitante
Re: Significado de ^=
« Respuesta #3 en: 31 de Mayo de 2008, 22:26:51 »
mmhh ya veo

Ahora entiendo, es un inversor de bits  :mrgreen: Lo chistoso es que como la variable no es bool no puede usarse

whichfb++;

para invertirla.

Gracias Bruno.

Hola

¿que demonio es un es un inversor de bit?

el XOR es un operador exclusivo a nivel de bit ,

que solo en el caso que uno de los dos operando es igual a uno da como resultado 1 , y no es un inversor de bit!

x    y    |   OR    AND    XOR    NOT
_________________________________
0    0    |     0       0          0    1
1    0    |    1       0          1    1
0    1    |     1       0          1    1
1    1    |    1       1          0    0


y por ultimo el pseudocodigo   "op="

es un metodo de C que permite simplificar la escritura de un programa unificando  una asignación a una operación

pero la carga de instrucciones es idéntica
   
 x += y    igual a    x = x + y   

lo mas parecido a un inversor de bit es el unario '~' que es un complemento a uno. debido que en un sistema binario el desbordamiento se cumple cada rotación el efecto puede parecer una inversión de bit pero matemáticamente es un complemento a uno y nada mas.


espero te sirva.

Saludos.


 

« Última modificación: 31 de Mayo de 2008, 22:45:38 por microlost »

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Significado de ^=
« Respuesta #4 en: 31 de Mayo de 2008, 22:41:26 »
mmhh ya veo

Ahora entiendo, es un inversor de bits  :mrgreen: Lo chistoso es que como la variable no es bool no puede usarse

whichfb++;

para invertirla.

Gracias Bruno.

Hola

¿que demonio es un es un inversor de bit?

el XOR es un operador exclusivo a nivel de bit ,

que solo en el caso que uno de los dos operando es igual a uno da como resultado 1 , y no es un inversor de bit!

x     y    |    OR     AND     XOR     NOT
_________________________________
0     0    |      0        0           0     1
1     0    |     1        0           1     1
0     1    |      1        0           1     1
1     1    |     1        1           0     0


Microlost, si ves en la tabla que has puesto:

x y (x XOR y)
0 0 0
1 0 1
0 1 1
1 1 0

Como podrás darte cuenta en las útimas dos líneas, siempre que a un bit (0 o 1) se le hace la operación XOR con el valor 1 el resultado es el valor contrario.
Ej:
0 XOR 1 = 1
1 XOR 1= 0.

Por eso el maestro migsantiago habla de un inversor de bits.
Espero haberme explicado.
Ok saludos, nos leemos!  :mrgreen:
                       
« Última modificación: 31 de Mayo de 2008, 22:43:42 por firepic »
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

microlost

  • Visitante
Re: Significado de ^=
« Respuesta #5 en: 31 de Mayo de 2008, 22:52:02 »
Hola,

Citar
Por eso el maestro migsantiago habla de un inversor de bits.
Espero haberme explicado.

haya vamos otras vez

no te quería ofender ni a ti ni a tu maestro !

simplemente deciros que el inversor de bit es un termino incorrecto aplicado a la informática... si luego empezamos con que la matemática es una opinión !!

endoses estoy escribiendo en el sitio equivocado.

S2.

« Última modificación: 31 de Mayo de 2008, 22:56:02 por microlost »

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Significado de ^=
« Respuesta #6 en: 31 de Mayo de 2008, 22:52:36 »
Exacto, le llamé inversor de bits, pero solo a ese código en específico, respetando el significado de XOR.  :mrgreen:

Los casos de interés de la tabla de verdad XOR son cuando whichfb es operado con XOR por uno, en la tabla siguiente A es whichfb, en su último bit.

Código: [Seleccionar]
A B XOR
0 0 0
0 1 1 <--- Caso de interés
1 0 1
1 1 0 <--- Caso de interés

^_^

jeje y no se enojen, aquí nadie es maestro, y estamos todos para aprender.

^_^


microlost

  • Visitante
Re: Significado de ^=
« Respuesta #7 en: 31 de Mayo de 2008, 23:07:33 »
Hola,

nada de personal!

... simplemente que me pareció correcto puntualizar la diferencia.


while(0).... en cristiano no ha pasado nada;


S2;

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Significado de ^=
« Respuesta #8 en: 31 de Mayo de 2008, 23:08:32 »
Microlost, no era para que te lo tomaras así. Solo quería explicarte el porqué del uso de esa frase, que como dice migsantiago es aplicada sólo a ese código en particular, y no a todo la función XOR, ya tú bien has explicado su aplicación en general.
Cuando llamé maestro a migsantiago es porque reconozco que tiene mucha más experiencia que yo en programación de pics, al igual que todos los demás moderadores de este foro.  :P
No es mi intención estar discutiendo sobre detalles que al final no llegan a nada.  :?
Te pido disculpas si te ofendí de alguna manera.
Yo no me sentí ofendido en lo absoluto, este foro es para compartir ideas y aclarar cosas. Y se respeta la individualidad.  :-/
Ok saludos cordiales, nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Significado de ^=
« Respuesta #9 en: 31 de Mayo de 2008, 23:10:56 »

while(0).... en cristiano no ha pasado nada;


jejeje

Bienvenido al foro Microlost, aquí en el foro compartimos mucho conocimiento y a veces nos equivocamos, pero lo importante es que no somos serios ni estrictos al momento de publicar mensajes.

microlost

  • Visitante
Re: Significado de ^=
« Respuesta #10 en: 31 de Mayo de 2008, 23:30:55 »

ok gracias ...llevo años leyendo vuestro forum desde cuando estaba en miarroba

también es verdad que en los últimos días estoy un poco rallado ..

estoy haciendo el bootloader para los PIC32 y como esto bichos son nuevos nadie sabe como hacer que el bootloader se carge desde RAM..

vale .. espero dar con la solución


Saludos firepic
Saludos migsantiago



Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Significado de ^=
« Respuesta #11 en: 31 de Mayo de 2008, 23:44:13 »
Felicidades microlost, por el excelente trabajo que estas haciendo!
Ojalá puedas publicar los resultados.  :P
Te deseo éxito, nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web


 

anything