Autor Tema: ¿Cuál es la diferencia entre & y and en un código cpp?  (Leído 526 veces)

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

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
¿Cuál es la diferencia entre & y and en un código cpp?
« 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?
   
« Última modificación: 08 de Septiembre de 2022, 18:46:54 por DominusDRR »
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:¿Cuál es la diferencia entre & y and en un código cpp?
« Respuesta #1 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?
« Última modificación: 08 de Septiembre de 2022, 19:04:09 por KILLERJC »

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32