回答:
これはビット単位の削減演算子です。|a & b
は、a
(単一ビットを生成する)のすべてのビットに論理ORを適用し、そのビットとの論理ANDを実行することを意味しますb
。|a
がa
シングルビットの場合は効果がありません。
それにもかかわらず、ビット単位の削減が単一ビット値に適用されるのを見るのは非常に一般的です。典型的な例の1つは、自動生成されたコードで、実際の幅はa
構成によって異なる場合があります。別の可能性は、これがa
かつていくつかのビットを持っていたレガシーコードであることです。a
がシングルビット値になったとき、この行は技術的には正しいので、不要になったリダクション演算子はそのまま残されていました。