Допустим, у меня есть переменная uint16_t
, в которой я должен установить определенные биты.
Пример:
uint16_t field = 0;
Это означало бы, что все биты равны нулю: 0000 0000 0000 0000
Теперь я получаю некоторые значения, которые мне нужно установить в определенных позициях.
val1=1; val2=2, val3=0, val4=4, val5=0;
Структура установки битов следующая.
0|000| 0000| 0000 000|0
val1
должен быть установлен первым битом слева. так что это только один или ноль.
val2
должен быть установлен в следующих трех битах. val3
в следующих четырех битах. val4
в следующих семи битах и val5
в одном последнем бите.
Результат будет таким: 1010 0000 0000 1000
Я только узнал, как один конкретный бит, но не «группы». (сдвиг или набор битов)
Кто-нибудь знает, как решить эту проблему?