Вообще-то, вопрос довольно каверзный. Для чисел со ЗНАКОМ нельзя использовать арифметический сдвиг для деления на степень 2-х.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Bill 22 марта 2004 г. 21:12
В ответ на: Подскажите глупому по AVR ассемблеру отправлено Совсем запутавшийся новичек 22 марта 2004 г. 15:04

В общемм случае результат будет НЕКОРРЕКТНЫЙ. Например, деление -2 на 4 даст в результате -1, а не 0, что должно быть на самом деле.
AVR GCC делает подобную оптимизацию, но сначала производится проверка знака. Если число отрицательное, для производится его предварительная коорекция с тем чтобы конечный результат был верным. По-моему, там вычитается половина исходного числа, но за точность не ручаюсь.
Возможно, кто-то пользуется данным компилятором и подскажет правильный алшоритм.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru