Logic Operators

Hi, I need help understanding these operations


DEECON=(unsigned char)((adr>>8)&0x01);
is adr being shifted to the right? and then?
what is &0x01 ...a pointer?


while((DEECON&0x80)==0);
Explain the logic operation here please.

The more detail the better...I am new at this
Thank you

More questions in this forum