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