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 位。
我不明白为什么这些不同
我是这样写的:
number &= 0 << time;
应该这样写:
number &= ~(1 << time);
对所有位进行按位运算。
0 << time
的结果是第time位设置为零,所有其他位都为零。所以所有位都为零。按位和零将始终导致零。
相反,1 << time
的结果是第次位设置为1,其他所有位为零。按位取反后,结果是第time位置0,其他位全为1。按位并将仅清零 timeth 位。