ビット演算なんて使わない方がいいと思うよ個人的にはw
かえってコードが複雑になるだけ。

(1) Tetriminoオブジェクトはそれを構成するすべてのブロックの位置(原点からのオフセット)
のリストを、テトリミノの種類と現在の回転状態に合わせて返すメソッドを持つ。

(2) Fieldオブジェクトは指定位置にブロックが存在するかどうかを返すメソッドを持つ

この2つを使って普通にヒットテストする方が簡単で分かりやすい。
何が悲しくてわざわざ問題を複雑にする必要があるのか