为什么在清除位时必须使用“~”运算符?
为什么在清除位时必须使用“~”运算符?
这个问题已经有了相应的答案:
例如,如果我想在C中设置y中位置为n的位。
y = y | (1 << n)
但是如果我想删除y中位置为n的位,我必须在二进制AND后使用~操作符。
y = y & ~(1 << n);
我的问题是:为什么我必须使用~操作符?
这是因为结果变成了负数区域吗?
admin 更改状态以发布 2023年5月23日
如果您想在从右边数的第三个位置设置一个位:
Y : 01001000 1 << 2 : 00000100 Y | (1 << 2) : 01001100 The | is OR, bits are set to 1 if any is 1.
如果您想要移除该位:
1 << 2 : 00000100 ~(1 << 2) : 11111011 The ~ is NOT, bits are inversed Y : 01001100 Y & ~(1 << 2) : 01001000 The & is AND, bits are set to 1 if both are 1.
我建议您阅读更多关于位运算符的知识。