Увеличаването 2 подписано номера => 2 подпише бита?

O

omara007

Guest
Здравейте приятели

Ако аз
съм умножи 2 подписано числа,
да речем всеки е представена като 16-битов 2
на комплемента двоичен вектор.Дали 32-битов резултат съдържа 2 подпише битове или 1?

 
В 32-битов резултат трябва да съдържа 1 знак малко.
Виж за следващите Atmel прилагането бележка:
AVR201: Използвайки AVR Хардуер мултиплициращо
Мисля, че това може да ви помогне да бележка.

 
svicent написа:

В 32-битов резултат трябва да съдържа 1 знак малко.

Виж за следващите Atmel прилагането бележка:

AVR201: Използвайки AVR Хардуер мултиплициращо

Мисля, че това може да ви помогне да бележка.
 
Да, продуктът от най-големите отрицателни числа, напр -128 *- 128 (0x80 * 0x80) в случай на подписан 8 * 8.

PS: Чисто говоримо, 2 състав номерата не подпише битов, така че те също не могат да са две.Разбирам, че сте се чудех дали за 16 * 16 подписан размножават резултат е излишно бита.Както можете да видите от моя пример, той е не.Но тя е близо.Ако решите да реализирате насищане логика, може да замени 0x80 * 0x80 = 0x4000 от 0x3FFF.След това можете да пропуснете един "знак" малко, съответно изпълни аритметична ляво промяна на резултата.По този начин,
ще получиш правилната мащабирани дробният подписано размножават, така както е описана в споменатата Atmel прилагане бележка.

 
Този отговор е да се информират дъската / форума, че ми проблем е решен и темата / темата може да бъде затворена.

Всъщност има само един случай, в който се мултиплицира от 2 подписано номера (от същия размер), няма да доведе до 2 подпише бита.Този случай е, когато ти се размножават най-големите отрицателни числа (което може да се изразява в определен брой битове).Друг отколкото този случай се, винаги има 2 подпише бита в резултата.

 

Welcome to EDABoard.com

Sponsor

Back
Top