TODOPIC

Otros Microcontroladores / Dispositivos programables => Arduino => Mensaje iniciado por: DominusDRR en 08 de Septiembre de 2022, 18:24:25

Título: ¿Cuál es la diferencia entre & y and en un código cpp?
Publicado por: DominusDRR en 08 de Septiembre de 2022, 18:24:25
Hola.

Estoy migrando un código de un ejemplo en Arduino a otro microcontrolador sin Arduino.

Me he topado con la siguiente.


    if ((mode & MODE_CARDEMU and modeSE == 2) || (mode & MODE_P2P and modeSE == 3))

Mi pregunta es: ¿Cuál es la diferencia entre & y and?
   
Título: Re:¿Cuál es la diferencia entre & y and en un código cpp?
Publicado por: KILLERJC en 08 de Septiembre de 2022, 19:01:06
La misma diferencia uqe hay entre & y &&

& es la AND bitwise o bit a bit.
&& es la AND logica, es decir  solo tomando como verdadero y falso.

https://en.cppreference.com/w/cpp/language/operator_alternative

En tu ejemplo..

mode & MODE_CARDEMU

Observa si el bit de CARDEMU esta activo... Supongamos que MODE_CARDEMU es 0010 , si mode termina siendo 1010, te vas a quedar con : 0010, en este caso al ser distinto de cero es "verdadero" (logico)
Por otro lado tenes modeSE == 2, lo cual se va a evaluar como verdadero o falso (logico).

Luego tenes el AND logico entre estos dos.. ¿El bit de CARDEMU esta presente en mode y ademas modeSE es igual a 2?
Título: Re:¿Cuál es la diferencia entre & y and en un código cpp?
Publicado por: DominusDRR en 08 de Septiembre de 2022, 19:10:59

https://en.cppreference.com/w/cpp/language/operator_alternative


Esa no me la sabía. Gracias