Тема: CITROEN-ARDUINO
Показать сообщение отдельно
Старый 21.10.2015, 12:27   #66
T_r_D
Старший Пользователь
 
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
T_r_D is a jewel in the roughT_r_D is a jewel in the roughT_r_D is a jewel in the rough
По умолчанию

Цитата:
Сообщение от lti1 Посмотреть сообщение
T_r_D, попробуйте так:

if (bitRead(buf[6],6) == 1){AP = 7; APV = 0; AM = buf[6]^=1<<6;}

В итоге в переменной AM получите:

3 или 00000011 None
7 или 00000111 Classical
11 или 00001011 Jazz-Blues
15 или 00001111 Pop-Rock
19 или 00010011 Vocal
23 или 00010111 Techno
А что означает buf[6]^=1<<6 ?

И почему моё смещение не приводит к такому результату?
По сути я хочу первые 5 бит переместить в начало обнулив последним 3
Мне кажется что при смещении какой-то мусор прилетает.
Может сначала спаять с байтом забитым нулями, а потом сместить?
Только хочется это по компактнее расписать, а не с кучей строк и условий.
T_r_D вне форума   Ответить с цитированием