Я пытался понять Arduino библиотеку «виртуальный провод», и я столкнулся с этим кодом:В чем смысл этого побитового XOR?
static uint8_t vw_ptt_pin = 10;
static uint8_t vw_ptt_inverted = 0;
// ...
void vw_set_ptt_pin(uint8_t pin)
{
vw_ptt_pin = pin;
}
void vw_set_ptt_inverted(uint8_t inverted)
{
vw_ptt_inverted = inverted;
}
// ...
void vw_tx_start()
{
// ...
digitalWrite(vw_ptt_pin, true^vw_ptt_inverted);
// ...
}
void vw_tx_stop()
{
// ...
digitalWrite(vw_ptt_pin, false^vw_ptt_inverted);
// ...
}
Я просто не понимаю, почему он использует true^vw_ptt_inverted
и false^vw_ptt_inverted
. Вывод этой побитовой операции (целое число) не совпадает с типом ввода функции (логическим). Также, что делать 0^A
? Разве это не 0^A==A
?
Это просто случайный код. Не пытайтесь понять это, это не имеет никакого смысла. – SergeyA