Прошло некоторое время с тех пор, как я программировал на C и не делал никаких битовых масок.
Моя проблема заключается в том, что при запуске моего устройства драйвер моего устройства инициализирует биты в регистрах, но предполагается, что только некоторые из них могут быть изменены. Я знаю, какие биты изменяемы, и я знаю, какими они должны быть в зависимости от места в памяти.
Например: $0x00AA всегда должен иметь формат 0b101XXX01, где X можно изменять, а все остальное должно оставаться постоянным. В настоящее время функция принимает адрес и значение и просто устанавливает это значение на этот адрес. Мне нужно изменить его, чтобы даже если функция была передана в 0b11111111 для регистра $0x00AA, она должна была быть установлена на 0b10111101. Аналогично, от 0b00000000 до 0b10100001.
|
,&
,~
), особенно версии оператора присваивания (|=
,&=
). - person Medinoc   schedule 09.07.2015