在Java中,是否可以使用按位运算清除一点?
答案 0 :(得分:40)
是的,使用
bits & ~(1 << n)
其中位是int / long而 n 是要清除的第n位。
(这是一篇有用的博文:low level bit hacks you absolutely must know)
答案 1 :(得分:0)
dfa答案的替代方法是使用BitSet datastructure。它支持AND,OR和XOR等运算。
var bitset = new BitSet(K); // Initialize a bitset with K digits.
var nthBit = bitset.get(n); // Get Nth bit (true/false).
bitset.clear(n); // Clears N'th bit to false.
bitset.set(n); // Sets N'th bit to true.
bitset.flip(n); // Toggles N'th bit.
在您的情况下,您将寻找bitset.clear(n)
。
如果必须使用整数,请使用bits |= (1 << N)
和
提及了dfa,请清除使用:bits &= ~(1 << N)
。