Dies ist ein bitweiser Reduktionsoperator . |a & b
bedeutet, dass Sie ein logisches ODER auf alle Bits von anwenden a
(ein einzelnes Bit erzeugen) und dann ein logisches UND dieses Bits und ausführen b
. |a
hat keine Auswirkung, wenn a
es sich um ein einzelnes Bit handelt.
Trotzdem ist es durchaus üblich, dass einzelne Bitwerte bitweise reduziert werden. Ein typischer Fall ist automatisch generierter Code, bei dem die tatsächliche Breite von a
von der Konfiguration abhängen kann. Eine andere Möglichkeit ist Legacy-Code, bei dem a
einmal mehrere Bits vorhanden waren. Als a
diese Zeile zu einem Einzelbitwert wurde, war sie technisch immer noch korrekt, sodass der jetzt nicht mehr benötigte Reduktionsoperator beibehalten wurde.