int 实现bit位的小短文-基本原理

70 阅读1分钟

int有32位,所以可以用起其二进制位存储一些信息,多用于带有boolean类型的。对于目标值v,当我们执行 v |= (1 << offset); 这一行代码时,实际上是在设置第offset 位为 1 的操作。

  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。

  2. v |= ...:这是按位或操作。在 Java 中,| 运算符表示按位或操作,对应位置上只要有一个为 1,那么结果的对应位置就是 1,否则为 0。这样,通过位运算的方式,我们可以将位图中的某一位设置为 1,而不影响其他位。