In an assignment involving cyclic shift hash codes, the instructions include the following code:
int hashCode(const char* p, int len)
{ unsigned int h = 0;
for (int i = 0; i < len; i++)
{ h = (h << 5)|(h >> 27);
h += (unsigned int)p[i];
}
return h;
}
What do the >> and << in line 4 mean?