Алгоритам штанда је алгоритам множења који нам омогућава да помножимо два потписана бинарна цела броја у комплементу 2, респективно. Такође се користи за убрзавање процеса множења. Такође је веома ефикасан. Ради на стринг битовима 0 у множитељу који не захтева никакав додатни бит, само помера крајње десне битове низа и низ 1 у тежини бита множитеља 2кна тежину 2мто се може сматрати као 2к+ 1- 2м .
Следи сликовни приказ Бутовог алгоритма:
У горњем дијаграму тока, у почетку, АЦ и Пн + 1 битови су постављени на 0, а СЦ је бројач секвенци који представља укупан скуп битова н, што је једнако броју битова у множитељу. Постоје БР који представљају битови множења, а КР представља битови множитеља . Након тога, наишли смо на два бита множитеља као Кни Кн + 1, где Кн представља последњи бит КР, а Кн + 1представља инкрементирани бит Кн за 1. Претпоставимо да су два бита множитеља једнака 10; то значи да морамо да одузмемо множилац од парцијалног производа у акумулатору АЦ и затим извршимо операцију аритметичког померања (асхр). Ако су два множитеља једнака 01, то значи да треба да извршимо сабирање множеника делимичном производу у акумулатору АЦ, а затим извршимо операцију аритметичког померања ( Асхр ), укључујући Пн + 1 . Операција аритметичког померања се користи у Бутовом алгоритму за померање АЦ и КР битова удесно за један и остаје непромењен предзнак у АЦ. Бројач секвенци се континуирано смањује све док се рачунска петља не понови, једнако броју битова (н).
Рад на алгоритму штанда
- Поставите бинарне битове множитеља и множитеља као М и К, респективно.
- У почетку смо поставили АЦ и Кн + 1региструје вредност на 0.
- СЦ представља број битова множитеља (К), и то је бројач секвенци који се континуирано смањује до једнак броју битова (н) или достиже 0.
- Кн представља последњи бит К, а Кн+1приказује инкрементирани бит Кн за 1.
- На сваком циклусу алгоритма штанда, Кни Кн + 1битови ће бити проверени на следећим параметрима на следећи начин:
- Када два бита Кни Кн + 1су 00 или 11, једноставно изводимо операцију аритметичког померања удесно (асхр) на делимични производ АЦ. И битови Кн и Кн + 1се повећава за 1 бит.
- Ако су битови Кни Кн + 1се приказује на 01, битови множења (М) ће бити додати у АЦ (акумулаторски регистар). Након тога, извршимо операцију десног померања на АЦ и КР битове за 1.
- Ако су битови Кни Кн + 1је приказано на 10, битови множења (М) ће бити одузети од АЦ (регистра акумулатора). Након тога, извршимо операцију десног померања на АЦ и КР битове за 1.
- Операција континуирано ради све док не постигнемо н - 1 бит у алгоритму кабине.
- Резултати бинарних битова множења биће сачувани у АЦ и КР регистрима.
Постоје две методе које се користе у Бутовом алгоритму:
спојеви и врсте спојева
1. РСЦ (Ригхт Схифт Цирцулар)
Он помера крајњи десни бит бинарног броја, а затим се додаје на почетак бинарних битова.
2. РСА (аритметика десног померања)
Додаје два бинарна бита, а затим помера резултат удесно за 1-битну позицију.
маркдовн прецртано
Пример : 0100 + 0110 => 1010, након додавања бинарног броја померите сваки бит за 1 удесно и ставите први бит резултанте на почетак новог бита.
Пример: Помножите два броја 7 и 3 користећи Боотх-ов алгоритам множења.
Године . Овде имамо два броја, 7 и 3. Пре свега, треба да конвертујемо 7 и 3 у бинарне бројеве као што су 7 = (0111) и 3 = (0011). Сада поставите 7 (у бинарном 0111) као множитељ (М) и 3 (у бинарном 0011) као множилац (К). А СЦ (број секвенци) представља број битова, а овде имамо 4 бита, тако да поставите СЦ = 4. Такође, показује број итерационих циклуса алгоритама кабине, а затим циклуси се покрећу СЦ = СЦ - 1 пут.
Пн | Пн + 1 | М = (0111) М' + 1 = (1001) & Операција | АЦ | П | Пн + 1 | СЦ |
---|---|---|---|---|---|---|
1 | 0 | Иницијал | 0000 | 0011 | 0 | 4 |
Одузми (М' + 1) | 1001 | |||||
1001 | ||||||
Извршите аритметичке операције десног померања (асхр) | 1100 | 1001 | 1 | 3 | ||
1 | 1 | Извршите аритметичке операције десног померања (асхр) | 1110 | 0100 | 1 | 2 |
0 | 1 | Сабирање (А + М) | 0111 | |||
0101 | 0100 | |||||
Извршите операцију аритметичког померања удесно | 0010 | 1010 | 0 | 1 | ||
0 | 0 | Извршите операцију аритметичког померања удесно | 0001 | 0101 | 0 | 0 |
Нумерички пример Бутовог алгоритма множења је 7 к 3 = 21, а бинарни приказ броја 21 је 10101. Овде добијамо резултанту у бинарном облику 00010101. Сада је претварамо у децимални, као (000010101)10= 2*4 + 2*3 + 2*2 + 2*1 + 2*0 => 21.
како сазнати величину екрана
Пример: Помножите два броја 23 и -9 користећи Боотхов алгоритам множења.
Овде је М = 23 = (010111) и К = -9 = (110111)
ПнПн + 1 | М = 0 1 0 1 1 1 М' + 1 = 1 0 1 0 0 1 | АЦ | П | Пн + 1СЦ |
---|---|---|---|---|
У почетку | 000000 | 110111 | 0 6 | |
1 0 | Одузми М | 101001 | ||
101001 | ||||
Извршите операцију аритметичког померања удесно | 110100 | 111011 | петнаест | |
Једанаест | Извршите операцију аритметичког померања удесно | 111010 | 011101 | 1 4 |
Једанаест | Извршите операцију аритметичког померања удесно | 111101 | 001110 | 1 3 |
0 1 | Сабирање (А + М) | 010111 | ||
010100 | ||||
Извршите операцију аритметичког померања удесно | 001010 | 000111 | 0 2 | |
1 0 | Одузми М | 101001 | ||
110011 | ||||
Извршите операцију аритметичког померања удесно | 111001 | 100011 | Једанаест | |
Једанаест | Извршите операцију аритметичког померања удесно | 111100 | 110001 | 1 0 |
Пн + 1 = 1, то значи да је излаз негативан.
Дакле, 23 * -9 = 2 комплемента од 111100110001 => (00001100111)