如何在多头的特定位置设置/取消设置一点?
2022-09-01 12:28:30
如何在Java中设置/取消设置多头的特定位置?
例如
long l = 0b001100L ; // bit representation
我想将位设置为位置2,将位设置为位置3,因此相应的长将,
long l = 0b001010L ; // bit representation
任何人都可以帮我怎么做?
如何在Java中设置/取消设置多头的特定位置?
例如
long l = 0b001100L ; // bit representation
我想将位设置为位置2,将位设置为位置3,因此相应的长将,
long l = 0b001010L ; // bit representation
任何人都可以帮我怎么做?
要设置位,请使用:
x |= 0b1; // set LSB bit
x |= 0b10; // set 2nd bit from LSB
删除一点使用:
x &= ~0b1; // unset LSB bit (if set)
x &= ~0b10; // unset 2nd bit from LSB
切换一下使用:
x ^= 0b1;
请注意,我使用 0b?。您也可以使用任何整数,例如:
x |= 4; // sets 3rd bit
x |= 0x4; // sets 3rd bit
x |= 0x10; // sets 9th bit
但是,这使得更难知道哪个位正在更改。
使用二进制文件可以查看将设置/擦除/切换哪些确切的位。
要动态设置位,请使用:
x |= (1 << y); // set the yth bit from the LSB
(1 << y)
移动 ...001 y 位还剩下,因此您可以将设置位 y 位移动。
您还可以一次设置多个位:
x |= (1 << y) | (1 << z); // set the yth and zth bit from the LSB
或取消设置:
x &= ~((1 << y) | (1 << z)); // unset yth and zth bit
或切换:
x ^= (1 << y) | (1 << z); // toggle yth and zth bit
最低有效位(lsb)通常被称为位0,因此您的“位置2”实际上是“位1”。
long x = 0b001100; // x now = 0b001100
x |= (1<<1); // x now = 0b001110 (bit 1 set)
x &= ~(1<<2); // x now = 0b001010 (bit 2 cleared)