Bitshift question.

I'm not sure I quite follow, but the statement:

if((i << (0x20 - PID)) & SupportedPID20){
   //Something here.
}

If say for example Supported_PID20 is xxx1xxxxxxxxxxxxxxxxxxxxxxxxxxxx, then the statement would execute if PID = 0x04, where x is don't care.

The following modified statement:

if((i << (0x20 - PID)) == SupportedPID20){
   //Something here.
}

If say for example Supported_PID20 is 00010000000000000000000000000000, then the statement would execute if PID = 0x04.