我在矩阵中有许多对象,它们将连接存储在一个整数变量中。
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)的位。
我希望有人可以帮助我。当涉及到位操作时,我迷失了。
答案 0 :(得分:3)
这应该这样做:
connections = ((connections << 1) | (connections >> 3)) & 0x0f;