Odpowiedzi:
Jest to nieco mądry operator redukcji . |a & b
oznacza, że zastosujesz logiczne OR do wszystkich bitów a
(tworząc pojedynczy bit), a następnie wykonasz logiczne AND tego bitu i b
. |a
nie ma wpływu, gdy a
jest pojedynczym bitem.
Niemniej jednak dość często obserwuje się bitową redukcję wartości pojedynczych bitów. Jednym typowym przypadkiem jest automatycznie generowany kod, w którym faktyczna szerokość a
może zależeć od konfiguracji. Inną możliwością jest to, że jest to starszy kod, w którym a
kiedyś było kilka bitów. Gdy a
stał się wartością jednobitową, linia ta była technicznie poprawna, więc pozostawiono niepotrzebnego operatora redukcji.