[an error occurred while processing this directive]
Я ведь не зря тебе советую - распиши, а объяснять каждый частный случай просто нелепо - их аж 2^32
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
Отправлено
=AVR=
20 октября 2006 г. 17:24
В ответ на:
А если старший байт 32-битного результата равен 1, что тогда получится ? Я знаю, что с нулем все в порядке ...
отправлено <font color=gray>vinogradov aleksei</font> 20 октября 2006 г. 17:21
Составить ответ
|||
Конференция
|||
Архив
Ответы
Писал. И не раз. Иначе бы не спрашивал ...
—
vinogradov aleksei
(20.10.2006 17:27
82.207.59.113
,
пустое
)
При умножении ЗНАКОВЫХ 16-битных чисел (старший бит каждого - знак, младшие 15 - величина) результат будет 30-битовым (биты 29..0). При промежуточных сложениях бит 30 получится автоматически как перенос из бита 29, а бит 31 нужно КАЖДЫЙ РАЗ получать отдельно - это и делается командами sbc MSB,zeroreg после каждого ПОЛУЗНАКОВОГО (mulsu) умножения - так короче и оптимальней
—
=AVR=
(20.10.2006 17:57
80.92.96.19
,
пустое
)
Не обязательно MSByte. Это как распространение переноса-заёма. Прибаввить фф или отнять 1 одно%ственно
—
-mse-
(20.10.2006 20:44
213.132.70.162
,
пустое
)
В данном примере именно MSByte. Всю эту процедуру можно реализовать и чисто беззнаковыми умножениями, но геморроя по распространению переноса будет немеряно больше
—
=AVR=
(20.10.2006 21:57
80.92.96.19
,
пустое
)
Ымел в виду, что операццыи может подвергнуцца не только МСБ, но и более млачшенькие. При умножении на 3-байтные операнд, например. Там придёцца распространять знак с МСБ-1.
—
-mse-
(21.10.2006 10:55
62.183.50.164
, 264 байт)
Отправка ответа
Имя (обязательно):
Пароль:
E-mail:
Тема (обязательно):
Сообщение:
Ссылка на URL:
Название ссылки:
URL изображения:
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание