на один бит влево (без потерь старших битов, кроме одного) с наименьшими затратами средствами С. пока старший бит снимаю маской и | к младшему следующего, как то муторно. может есть более изящный способ ? stm32, IAR
Считавай по 32 бита Сдвигай, запоминай для переноса старший бит.
Да. У тебя размер массива кратен 4м байтам. Можешь в 4 раза быстрее сдвигать.
спасибо. щас попробую оценить время затраты
У arm архитектуры, если инет не врет, операция левого сдвига записывает последний сдвинутый старший бит в флажок carry. Это можно использовать вместо И по маске. А если еще вспомнить, что сдвиг влево это умножение на два, а умножение на два это число + число, то можно просто складывать с собой каждое число в массиве справа-налево, первое число складывается без флажка переноса, все следующие: сложение с переносом.
Только из С достучаться до всего этого не так просто
Обсуждают сегодня