Arlleex 190 16 апреля, 2022 Опубликовано 16 апреля, 2022 · Жалоба 7 минут назад, Darth Vader сказал: Для любой операции: +, -, *, /, &, |, ^, <<, >> значение из переменной в памяти надо считать в регистр, произвести операцию в регистре и записать результат обратно в переменную в памяти. Что-то Вы не то говорите (или смысл другой), ибо volatile u8 i; void func() { u8 j = i >> 1; ... } i здесь после сдвига не изменит своего значения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Darth Vader 0 16 апреля, 2022 Опубликовано 16 апреля, 2022 · Жалоба 3 часа назад, Arlleex сказал: или смысл другой Наверное. Имелось ввиду такое: uint8_t i; ++i; i = i+5; i = i<<3; i |= 1<<3; Т.е. когда надо изменить значение переменной, вычислив её новое значение из текущего. Любые конструкции, где им переменной стоит слева от знака присваивания, и, одновременно, справа от него участвует в выражении. Т.е. там, где значение переменной участвует в вычислениях, и, одновременно, в эту же переменную сохраняется результат этих вычислений. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться