И это всё МОЁ

Есть 32-хразрядное слово.

c = 0x11111111;
s = c >> 1;
s0 = c & 1;

Надо заменить 29-й бит на (30-й ^ s0)

Можно сделать с std::bitset, теперь хотелось бы просто сдвигами и &,|,^.

Заранее благодарен.