![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
julia_lisha |
![]() ![]()
Сообщение
#1
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 147 Регистрация: 19.12.2009 Из: Omsk Город: omsk Учебное заведение: ОмГУ ![]() |
Помогите пожалуйста, не понимаю задание....
Заданы два числа <=16. Найти их произведение и с помощью битовых операций записать оба множителя и их произведение одно за другим в ячейку памяти размером в два байта без пропуска битов. Помогите с алгоритмом....не понимаю с чего необходимо начать.... Спасибо, VIP) |
![]() ![]() |
Евгений М. |
![]()
Сообщение
#2
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 199 Регистрация: 6.11.2009 Город: Уфа Вы: студент ![]() |
Цитата это необходимо реализовать массив как Аi*Bi, так? (IMG:style_emoticons/default/mad.gif) Не понимаю ваш вопрос. На языке C должно быть так: A[0]-первый множитель, A[1]-второй, A[2]-произведение, т.е. A[2]=A[0]*A[1] Вообщем намеками и примерами не смог дать понять идею алгоритма... (IMG:style_emoticons/default/sad.gif) Ну ладно, придется обьяснить. Имеем числа A и B представленые в двоичной системе. Представим число B=R3*1000+R2*100+R1*10+R0 где R3,R2,R1,R0 - цифры числа B третьего, второго, первого, нулевого разряда соответственно. Тогда A*B=A*(R3*1000+R2*100+R1*10+R0)=A*R3*1000+A*R2*100+A*R1*10+A*R0=C3+C2+C1+C0, где Сn=A*Rn*10^n Теперь разберемся с Rn. Он может быть равен либо 1 либо 0, тогда число Cx=A*10^x либо Cx=0 Умножение на 10^n можно реализовать с помошью команды SHL или ROL (какой из них точно не помню). Напоминаю, что все представленые выше числа (кроме индексов) записаны в 2-ичной системе счисления. Вопросы? (IMG:style_emoticons/default/biggrin.gif) |
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 25.5.2025, 23:42 |
Зеркало сайта Решебник.Ру - reshebnik.org.ru