У меня есть много объектов в матрице, которые хранят соединения со своими соседями в одной целочисленной переменной.
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° по часовой стрелке или против часовой стрелки. В приведенном выше примере вращение по часовой стрелке должно быть эквивалентно
connections = TOP | BOTTOM | LEFT;
Битовый сдвиг влево/вправо, равный 1, кажется очевидным решением, но я не знаю, как ограничить битовый сдвиг битами от LEFT (0x01) до BOTTOM (0x08).
Я надеюсь, что кто-то может мне помочь. Я теряюсь, когда дело доходит до битовых операций.