C程序使用按位与运算符清除数字的第n位

C program to clear nth bit of a number using bitwise and operator

我不明白为什么这些不同
我是这样写的:

 number &= 0 << time;

应该这样写:

number &= ~(1 << time);

对所有位进行按位运算。

0 << time的结果是第time位设置为零,所有其他位都为零。所以所有位都为零。按位和零将始终导致零。

相反,1 << time的结果是第位设置为1,其他所有位为零。按位取反后,结果是第time位置0,其他位全为1。按位并将仅清零 timeth 位。