int有32位,所以可以用起其二进制位存储一些信息,多用于带有boolean类型的。对于目标值v,当我们执行 v |= (1 << offset); 这一行代码时,实际上是在设置第offset 位为 1 的操作。
-
1 << offset:是一个左移操作。在 Java 中,<<运算符表示无符号左移操作。1 << offset表示将数字 1 的二进制表示中的所有位向左移动offset位。由于1在二进制中的表示是0000 0000 0000 0000 0000 0000 0000 0001,左移offset位相当于直接把第offset位标记为1。例如offset==3,1<<3的结果是0000 0000 0000 0000 0000 0000 0000 1000,即数字 8。 -
v |= ...:这是按位或操作。在 Java 中,|运算符表示按位或操作,对应位置上只要有一个为 1,那么结果的对应位置就是 1,否则为 0。这样,通过位运算的方式,我们可以将位图中的某一位设置为 1,而不影响其他位。