zHz00 Untitled

четверг, 10 марта 2016
23:43 if x and 1=1 then...
Студентам об'ясняю разные вещи, а сам на них иногда ловлюсь. Например -- если не уверены в приоритете операций, ставьте на всякий случай скобки.

Сегодня.

У меня было несколько кольцевых буферов размером, скажем, 16 элементов. С общим указателем на начало. Как мне обратиться к заданному элементу с индексом index?

base[x*BUF_SIZE+index], где x -- номер буфера.

А к следующему?

base[x*BUF_SIZE+(index+1)%BUF_SIZE], видимо.

Но у меня контроллер, считать остаток от деления -- это очень долго. А элементов 16. Лучше я тогда сделаю (index+1)&0x0F. Получается:

base[x*BUF_SIZE+(index+1)&(BUF_SIZE-1)]

Хм... что-то не работает.

ОКАЗАЛОСЬ, у побитового И приоритет НИЖЕ, чем у сложения и, тем более, умножения, т.е. я вычислял следующее:

base[(x*BUF_SIZE+(index+1))&(BUF_SIZE-1)]

@темы: Программирование, Борьба с техникой

URL
Весь день валялся в незабудках, размышлял о будущем отчиз...
я так долго собиралась и совершенно без всяких намеков с ...
По всей Корее через метр на два расставленны автоматы по ...
ну нафиг мне такое надо? пошли, значит, вчера в "Стр...
К программе Maya прилагаются (скачиваются с сайта) замеча...
"А может быть, все немного иначе – и проблема вами н...
Добавить комментарий

Расширенная форма

Подписаться на новые комментарии