Please help me understand what this function is checking and returning

Code:
int isPower2 (int myInt) {                                  
    return !(myInt>>31) & !!myInt & !(myInt & (myInt+(~1+1)));
}