C中关于对变量或寄存器进行位操作的有关问题,求指教。

C中关于对变量或寄存器进行位操作的问题,求指教。。
给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。
在以上两个操作中,要保持其它位不变。
要求:不用用bit fields。
我想了半天还是一头雾水,求助!

------解决方案--------------------
你把那个整数非了一下(~这是非),那么他的第三位就变成了0其他位全是1,你用a和那个数做“&”运算,就能做到设置第3位为0,保持其它位不变