mask = -1 << i; return (x & ~mask) | ((x >> 1) & mask);
mask = -1 << i; return ((x ^ (x >> 1)) & mask) ^ x;