Ok provo.
Quindi è per questo motivo che una cosa del genere:

int setbitOn(int x)
{
for (; x == 1; x >>= 1)
x = x | 1;
return x;
}

non funziona?