まず、アセンブラ出力になおしてみました。
cl -O2 /FAs iftest.c
です。
nは volatile int n = 1;としました。

●if (n == 0 || n == 3)の場合
-----------------------------------
mov  edx, DWORD PTR _n$[esp+12]
test  edx, edx
je  SHORT $L53243
mov  edx, DWORD PTR _n$[esp+12]
cmp  edx, ecx
jne  SHORT $L53240
-----------------------------------

●if ((9 >> n) & 1)の場合
-----------------------------------
mov  edx, 9
mov  cl, BYTE PTR _n$[esp+12]
sar  edx, cl
test   dl, 1
je  SHORT $L53240
-----------------------------------