Respostas:
Este é um operador de redução pouco a pouco . |a & b
significa que você aplica um OR lógico a todos os bits de a
(produzindo um único bit) e, em seguida, executa um AND lógico desse bit e b
. |a
não tem efeito quando a
é um único bit.
No entanto, é bastante comum ver a redução bit a bit aplicada a valores de bit único. Um caso típico é o código gerado automaticamente, em que a largura real a
pode depender da configuração. Outra possibilidade é que este seja um código legado, que a
já teve vários bits. Quando a
se tornou um valor de bit único, essa linha ainda estava tecnicamente correta, então o operador de redução agora desnecessário foi deixado em.