Top.Mail.Ru
Оптимаальный вариан...
 
Уведомления
Очистить все

Оптимаальный вариант преобразования битов

(@yuriy)
Level 2

Имеется переменная uint8_t. К ней прибавляется или отнимается единица. Интересуют два младших бита. При каждом изменении переменной их надо преобразовать следующим образом: 00 в 00, 01 в 01, 10 в 11, 11 в 10. Или по другому: 0 в 0, 1 в 1, 2 в 3, 3 в 2. Интересует оптимальный с точки зрения бысродействия вариант. Кто что может предложить? 

Цитата
Создатель темы Размещено : 14.02.2025 13:30
(@yuriy)
Level 2

Да, забыл упомянуть, что значение младшего бита выходного сигнала является исключающим или двух младших битов входного сигнала.

ОтветитьЦитата
Создатель темы Размещено : 14.02.2025 13:39
(@yuriy)
Level 2

Пока суд да дело сделал так:

uint8_t a     // исходное число
uint8_t b    // результат преобразования
b = a;
if(b & 2) b ^= 1;
ОтветитьЦитата
Создатель темы Размещено : 14.02.2025 16:51
Aveal
(@aveal)
Top level Admin

Запись от: @yuriy

Пока суд да дело сделал так:

uint8_t a     // исходное число
uint8_t b    // результат преобразования
b = a;
if(b & 2) b ^= 1;

Ну выглядит оптимально.

 

ОтветитьЦитата
Размещено : 14.02.2025 20:54
Поделиться: