@samarjan

Как сформировать байт данных с одного бита другого байта?

Не могу сформулировать алгоритм для формирования одного байта. Необходимо считать биты с ноги МК и сформировать из них байт, но аппаратную возможность использовать нельзя. Упрощает задачу конечно, что бит, который необходимо считать, находится всегда в одном и том же месте байта. Поясню на примере:
У меня есть переменная
char data;
На каждый такт мне приходит байт и всего их будет 8 штук, например:
0b00100001
0b00100101
0b00100101
0b00100001
0b00100001
0b00100001
0b00100101
0b00100001

Бит, выделенный жирным шрифтом мне нужно отследить и поставить в правильно место в переменную data и в результате переменная должны быть вот такой:
data == 0b01100010

Но составить алгоритм у меня никак не выходит, надеюсь на помощь сообщества
  • Вопрос задан
  • 510 просмотров
Пригласить эксперта
Ответы на вопрос 1
alsopub
@alsopub
char inbyte = 0b00100101;
char data = 0b01100010;
data = (data & 0b01111111) | ((inbyte & 0b00000100) << 5);

результат - 0b11100010;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы