如何在Java中使用bitshift切换整数标志?

时间:2012-10-15 15:07:11

标签: java bit-shift

我在矩阵中有许多对象,它们将连接存储在一个整数变量中。

public static final int NONE = 0x00;
public static final int LEFT = 0x01;
public static final int TOP = 0x02;
public static final int RIGHT = 0x04;
public static final int BOTTOM = 0x08;

connections = LEFT | RIGHT | BOTTOM; // example usage

现在我希望能够通过90°CW或CCW旋转某些物体。在上面的示例中,顺时针旋转应等于

connections = TOP | BOTTOM | LEFT;

左/右位移1似乎是明显的解决方案,但我不知道如何将位移限制为LEFT(0x01)到BOTTOM(0x08)的位。

我希望有人可以帮助我。当涉及到位操作时,我迷失了。

1 个答案:

答案 0 :(得分:3)

这应该这样做:

connections = ((connections << 1) | (connections >> 3)) & 0x0f;