Как разделить двоичные данные, чтобы сформировать два разделенных двоичных данных?
Я хочу разделить полученные двоичные данные на два двоичных данных.
Возьмем, к примеру, следующие полученные двоичные данные:
uint32_t data = 0xFFFF0001;
В двоичном формате это: 11111111111111110000000000000001
Если нам нужно разделить этот вышеприведенный двоичный файл на два новых двоичных данных, как это можно сделать?
В качестве примера из 0xFFFF0001, как мы можем получить первые 17 бит как data1 = 111111111111111110, а затем оставшиеся 15 бит как data2 = 000000000000001 ?
@floppy380, 👍1
1 ответ
Лучший ответ:
Вы можете использовать оператор битовый сдвиг
и оператор и
, например:
uint32_t data = 0xFFFF0001;
Следующая строка сдвинет все биты на 15 позиций вправо, то есть 15 наименее значащих битов будут удалены, а остальные биты сдвинуты вправо.
uint32_t dataLeft = data >> 15;
11111111111111110000000000000001
>>>>>>>>>>>>>>>11111111111111110000000000000001
| Bit shift || orig. bits ||Removed bits |
Для остальных 15 бит вы можете использовать оператор and
, который просто превращает все 1 в 0 для тех битов, которые не входят в битовую маску (0x7FFF).
uint16_t dataRight = data & 0x7FFF;
value: 11111111111111110000000000000001
bit mask (0x7FFF): 00000000000000000111111111111111
-------------------------------- & / AND
00000000000000000000000000000001
- Печать string and integer LCD
- Почему мои часы реального времени показывают неверное время с моего ПК?
- Arduino uno + cnc Shield v3 + драйвер шагового двигателя A4988 + AccelStepper?
- Отправьте несколько значений int из Python в Arduino, используя pySerial
- Глобальные переменные занимают много места в динамической памяти.
- (Код ультразвукового датчика: такого файла или каталога нет)
- rfid_default_keys проверить с помощью RC522
- Команда strtok() с Serial связью