Здравствуйте, id, Вы писали:
А>> unsigned long x = ...
А>> x = ((x << 16) | (x >> 16)) & 0xffffffffUL;
id> unsigned long x = ...
id> x = ((x << (sizeof(x)<<4) ) | (x >> (sizeof(x)<<4))) & (unsigned long)(-1);
Во-первых, как я понял, Вы пытались решить другую задачу. Во-вторых, при чем тут sizeof x? sizeof(unsigned long) не связан с количеством значащих двоичных разрядов в значениях этого типа. В-третьих, почему Вы решили, что приведение -1 к типу unsigned long должно давать максимальное беззнаковое значение?