Java的BitSet
类有一个方法Set
,该方法将单个位设置为1(=true).方法源代码如下:
public void set(int bitIndex) {
if (bitIndex < 0)
throw new IndexOutOfBoundsException("bitIndex < 0: " + bitIndex);
int wordIndex = wordIndex(bitIndex);
expandTo(wordIndex);
words[wordIndex] |= (1L << bitIndex); // Restores invariants
checkInvariants();
}
除了判断之外,该方法的核心代码是:words[wordIndex] |= (1L << bitIndex)
.我可以在作业(job)中清楚地看到,左边的部分是包含相关位的特定单词.然而,我不理解右侧部分(位索引的左移)是如何将请求的位(并且只有它)设置为1的.你能解释一下吗?