このコードは、32ビット int の0から31の範囲を超えた量でシフトを実行しています。 これの効果は、どのくらいシフトするのかを決めるために整数値の下位5ビット (32で割った余り) を使うことです (たとえば、40ビットでシフトすることは8ビットでシフトすることと同じで、32ビットでシフトすることは0ビットでシフトすることと同じです)。 これはおそらく、期待されたことではありません、それは少なくとも紛らわしいです。