тебе нужны операции побитового сдвига (<< и >>), выделения части по маске (&) и объединения (|). Сначала, ты должна разделить число на тетрады. Это делается с помощью операции &:| Код | int a1 = a & 0xF0; int a2 = a & 0x0F; |
в итоге в a1 будет старшая тетрада, а в a2 будет младшая. Затем тебе нужно сдвинуть a2 циклически на некоторое число бит. Для этого сначала нужно сдвинуть на 4 бита влево с помощью операции <<:Теперь нужно выделить 2 старших бита a1 и сделать их младшими, чтобы получить числа от 0 до 3-х включительно, для этого достаточно сдвинуть вправо на 6 разрядов. Затем уже можно сдвинуть a2 на полученное число бит вправо:Теперь объединим старшую с младшей тетрадой a2:| Код | a2 = ((a2 >> 4) | a2) & 0x0F; |
Ну и наконец нужно восстановить исходную старшую тетраду, которая была сохранена в a1:
|