Имеется переменная uint8_t. К ней прибавляется или отнимается единица. Интересуют два младших бита. При каждом изменении переменной их надо преобразовать следующим образом: 00 в 00, 01 в 01, 10 в 11, 11 в 10. Или по другому: 0 в 0, 1 в 1, 2 в 3, 3 в 2. Интересует оптимальный с точки зрения бысродействия вариант. Кто что может предложить?
Да, забыл упомянуть, что значение младшего бита выходного сигнала является исключающим или двух младших битов входного сигнала.
Пока суд да дело сделал так:
uint8_t a // исходное число uint8_t b // результат преобразования b = a; if(b & 2) b ^= 1;
Пока суд да дело сделал так:
uint8_t a // исходное число uint8_t b // результат преобразования b = a; if(b & 2) b ^= 1;
Ну выглядит оптимально.