a = 0x80000000; // the second last bit set
if( i & a == 0) // not set in i -> set it
i |= a;
else // set -> un-set it in i
i &= ~a;
edit: arg, конечно, вы можете XOR это :-) Но 2 - второй бит, а не второй последний бит.Может быть, лучше поговорить о MSB и LSB.