0

マトリックス内に、隣接するものへの接続を単一の整数変数に格納している多くのオブジェクトがあります。

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)のビットに制限する方法がわかりません。

誰かが私を助けてくれることを願っています。ビット演算に関しては迷っています。

4

1 に答える 1

3

これはそれを行う必要があります:

connections = ((connections << 1) | (connections >> 3)) & 0x0f;
于 2012-10-15T15:10:48.790 に答える