Кодировать и декодировать логические значения в одно целое число?

bit

Я пытаюсь записать состояние некоторых пинов с течением времени. Для экономии памяти я думаю закодировать состояния пинов в одно целое число, например:

Pin 1: TRUE
Pin 2: FALSE
Pin 3: FALSE
Pin 4: TRUE

Pin 1 = 1, Pin 2 = 2, Pin 3 = 4, Pin 4 = 8
1 + 0 + 0 + 8
Result: 9

Это довольно эффективно. Но как мне расшифровать состояния выводов из этого наилучшего варианта? Или вы порекомендуете лучший способ сделать это?

, 👍1


1 ответ


Лучший ответ:

0

Используйте оператор AND.

Например:

Состояние контакта 2 будет: (результат & 0x02) ? TRUE:FLASE

,

Мне потребовалась минута (ну, скорее, пять ;) ), чтобы понять, что это шестнадцатеричные значения, но решение простое и работает идеально. Спасибо!, @Esshahn