C++ question

in this code


unsigned int maxsize = 1024U*1024U*1024U*2U;
int size = 1024;
(...)
for(size=128;size<maxsize/4;size+=(size/4+7)&~7) 
{
instructions here...;
}

my questions are:
what does the U after 1024 stand for?
and what does the operator &~ do in the loop?
thnks