Алгоритм добутку Бута це алгоритм добутку, який дозволяє здійснювати операцію добутку пари знакових двійкових чисел у додатковому коді. Алгоритм був розроблений Ендрю Дональдом Бутом в 1951 році при проведенні досліджень в області кристалографії у коледжі ім. Дж. Бірбека в Блумсбері, Лондон. Бут використовував настільні калькулятори, в яких операція зсуву виконується значно швидше ніж операція додавання, і створив алгоритм, який збільшив швидкість їх виконання. Алгоритм Бута становить інтерес у вивченні архітектури комп'ютера.
Як працює алгоритм
Алгоритм Бута, використовує логічний метод прискорення операції добутку, завдяки зменшенню кількості операцій додавання в ході множення. В його основі лежить наступний прийом для послідовності двійкових чисел:
Розглянемо додатній множник, який містить блок одиниць, поміж нулів, наприклад 00111110. Добуток визначається по формулі:
де M – множник. Кількість операцій можна зменшити вдвічі, якщо представити добуток в наступному вигляді, замінюючи суму степенів двійки : різницею :
Дійсно, будь-яка послідовність одиниць у двійковому числі може бути розбита на різницю двох двійкових чисел.
Таким чином, ми дійсно можемо замінити операцію множення на послідовність одиниць в множнику більш простими операціями, такими як, додавання з множником, зсув часткових добутків, і віднімання множника. В алгоритмі використовується той факт, що нам не потрібно виконувати нічого, крім зсуву, коли черговий розряд множника в двійковому коді рівний нулю.
Цю схему можна застосувати для будь-якої кількості блоків одиниць в множнику (включаючи випадок з однією одиницею в блоці). Алгоритм Бута використовує цю схему за допомогою додавання, коли зустрічається початок блоку одиниць (0 1) і віднімання, коли зустрічається кінець блоку одиниць (1 0). Схема працює в тому числі і для від’ємних множників.
Типова реалізація алгоритму
Алгоритм Бута виконує циклічне додавання одного з двох заздалегідь заданих значень A і S до добутку P, над яким після цього виконується операція арифметичного зсуву вправо. Нехай m і r — перший і других множники, відповідно x і y являють собою кількість бітів в m і r. Кроки алгоритму:
- Встановити значення A і S, а також початкове значення P. Кожне з цих чисел повинно мати довжину, яка дорівнює (x + y + 1).
- A: Заповнити найбільш значимі (з ліва) біти значенням m. Біти (y + 1), які залишилися, заповнити нулями.
- S: Заповнити найбільш значимі біти значенням (−m) в додатковому коді. Біти (y + 1), які залишилися, заповнити нулями.
- P: Заповнити найбільш значимі x біт нулями. Справа від них заповнити біти значенням r. Записати 0 в крайній найменший значимий (правий) біт.
- Визначити значення двох найменш значимих (правих) бітів для P:
- Якщо їх значення дорівнює 01, знайти значення P + A. Переповнення ігнорувати.
- Якщо їх значення дорівнює 10, знайти значення P + S. Переповнення ігнорувати.
- Якщо їх значення дорівнює 00, дія не потребується. P залишається без змін і використовується на наступному кроці.
- Якщо їх значення дорівнює 11, дія не потребується. P залишається без змін і використовується на наступному кроці.
- Виконати операцію арифметичного зсуву над значенням, яке було отримане на другому кроці, на один біт вправо. Присвоїти P це нове значення.
- Повторити кроки 2 і 3 y разів.
- Відкинути крайній найменш значимий (правий) біт P. Це і є добуток m і r.
Приклад
Порахуємо добуток 3 × (−4), приймемо m = 3 і r = −4, а x = 4 і y = 4:
- m = 0011, -m = 1101, r = 1100
- A = 0011 0000 0
- S = 1101 0000 0
- P = 0000 1100 0
- Виконаємо цикл чотири рази:
- P = 0000 1100 0. останні два біти дорівнюють 00.
- P = 0000 0110 0. Арифметичний зсув вправо.
- P = 0000 0110 0. останні два біти дорівнюють 00.
- P = 0000 0011 0. Арифметичний зсув вправо.
- P = 0000 0011 0. останні два біти дорівнюють 10.
- P = 1101 0011 0. P = P + S.
- P = 1110 1001 1. Арифметичний зсув вправо.
- P = 1110 1001 1. останні два біти дорівнюють 11.
- P = 1111 0100 1. Арифметичний зсув вправо.
- P = 0000 1100 0. останні два біти дорівнюють 00.
- Результат добутку дорівнює 1111 0100, що є значенням числа −12.
Техніка представлена вище буде не адекватною для випадку, коли множник являє собою найменше можливе негативне число, яке може бути представлене даною кількістю розрядів(наприклад, якщо множник має 4 біти, це значення −8). Цю проблему, як один із способів, можна вирішити додаванням додаткового біту зліва для A, S і P. Потім виконується приведений вище алгоритм, із змінами у визначенні бітів A і S, значення, яке m раніше задавалося для x перших бітів A, тепер буде задаватися для x+1 бітів A.
Нижче приведений приклад більш точної методики з множенням числа −8 на число 2, з використанням 4-ох бітів для обидвох множників:
- A = 1 1000 0000 0
- S = 0 1000 0000 0
- P = 0 0000 0010 0
- Виконаємо цикл чотири рази:
- P = 0 0000 0010 0. останні два біти дорівнюють 00.
- P = 0 0000 0001 0. Арифметичний зсув вправо.
- P = 0 0000 0001 0. останні два біти дорівнюють 10.
- P = 0 1000 0001 0. P = P + S.
- P = 0 0100 0000 1. Арифметичний зсув вправо.
- P = 0 0100 0000 1. останні два біти дорівнюють 01.
- P = 1 1100 0000 1. P = P + A.
- P = 1 1110 0000 0. Арифметичний зсув вправо.
- P = 1 1110 0000 0. останні два біти дорівнюють 00.
- P = 1 1111 0000 0. Арифметичний зсув вправо.
- P = 0 0000 0010 0. останні два біти дорівнюють 00.
Результат добутку дорівнює 11110000 (після відкидання першого і останнього біта), що є значенням числа −16.
Посилання
- Radix-4 Booth Encoding [ 3 березня 2021 у Wayback Machine.]
- in
- Booth's Algorithm JavaScript Simulator [ 11 лютого 2021 у Wayback Machine.]
- Implementation in Python [ 30 жовтня 2020 у Wayback Machine.]
Джерела
- Andrew D. Booth. A signed binary multiplication technique. The Quarterly Journal of Mechanics and Applied Mathematics, Volume IV, Pt. 2 [1] [ 17 липня 2012 у Wayback Machine.]
- Collin, Andrew. Andrew Booth’s Computers at Birkbeck College [ 25 лютого 2021 у Wayback Machine.]. Resurrection, Issue 5, Spring 1993. London: Computer Conservation Society.
- Patterson, David and John Hennessy. Computer Organization and Design: The Hardware/Software Interface, Second Edition. . San Francisco, California: Morgan Kaufmann Publishers. 1998.
- Stallings, William. Computer Organization and Architecture: Designing for performance, Fifth Edition. . New Jersey: Prentice-Hall, Inc.. 2000.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Algoritm dobutku Buta ce algoritm dobutku yakij dozvolyaye zdijsnyuvati operaciyu dobutku pari znakovih dvijkovih chisel u dodatkovomu kodi Algoritm buv rozroblenij Endryu Donaldom Butom v 1951 roci pri provedenni doslidzhen v oblasti kristalografiyi u koledzhi im Dzh Birbeka v Blumsberi London But vikoristovuvav nastilni kalkulyatori v yakih operaciya zsuvu vikonuyetsya znachno shvidshe nizh operaciya dodavannya i stvoriv algoritm yakij zbilshiv shvidkist yih vikonannya Algoritm Buta stanovit interes u vivchenni arhitekturi komp yutera Yak pracyuye algoritmAlgoritm Buta vikoristovuye logichnij metod priskorennya operaciyi dobutku zavdyaki zmenshennyu kilkosti operacij dodavannya v hodi mnozhennya V jogo osnovi lezhit nastupnij prijom dlya poslidovnosti dvijkovih chisel Rozglyanemo dodatnij mnozhnik yakij mistit blok odinic pomizh nuliv napriklad 00111110 Dobutok viznachayetsya po formuli M 00111110 M 25 24 23 22 21 M 62 displaystyle M times prime prime 0 0 1 1 1 1 1 0 prime prime M times 2 5 2 4 2 3 2 2 2 1 M times 62 de M mnozhnik Kilkist operacij mozhna zmenshiti vdvichi yaksho predstaviti dobutok v nastupnomu viglyadi zaminyuyuchi sumu stepeniv dvijki 25 24 23 22 21 displaystyle 2 5 2 4 2 3 2 2 2 1 rizniceyu 26 21 displaystyle 2 6 2 1 M 010000 10 M 26 21 M 62 displaystyle M times prime prime 0 1 0 0 0 0 mbox 1 0 prime prime M times 2 6 2 1 M times 62 Dijsno bud yaka poslidovnist odinic u dvijkovomu chisli mozhe buti rozbita na riznicyu dvoh dvijkovih chisel 01 1 n0 2 10 0 n0 2 00 1 n0 2 displaystyle ldots 0 overbrace 1 ldots 1 n 0 ldots 2 equiv ldots 1 overbrace 0 ldots 0 n 0 ldots 2 ldots 0 overbrace 0 ldots 1 n 0 ldots 2 Takim chinom mi dijsno mozhemo zaminiti operaciyu mnozhennya na poslidovnist odinic v mnozhniku bilsh prostimi operaciyami takimi yak dodavannya z mnozhnikom zsuv chastkovih dobutkiv i vidnimannya mnozhnika V algoritmi vikoristovuyetsya toj fakt sho nam ne potribno vikonuvati nichogo krim zsuvu koli chergovij rozryad mnozhnika v dvijkovomu kodi rivnij nulyu Cyu shemu mozhna zastosuvati dlya bud yakoyi kilkosti blokiv odinic v mnozhniku vklyuchayuchi vipadok z odniyeyu odiniceyu v bloci Algoritm Buta vikoristovuye cyu shemu za dopomogoyu dodavannya koli zustrichayetsya pochatok bloku odinic 0 1 i vidnimannya koli zustrichayetsya kinec bloku odinic 1 0 Shema pracyuye v tomu chisli i dlya vid yemnih mnozhnikiv Tipova realizaciya algoritmuAlgoritm Buta vikonuye ciklichne dodavannya odnogo z dvoh zazdalegid zadanih znachen A i S do dobutku P nad yakim pislya cogo vikonuyetsya operaciya arifmetichnogo zsuvu vpravo Nehaj m i r pershij i drugih mnozhniki vidpovidno x i y yavlyayut soboyu kilkist bitiv v m i r Kroki algoritmu Vstanoviti znachennya A i S a takozh pochatkove znachennya P Kozhne z cih chisel povinno mati dovzhinu yaka dorivnyuye x y 1 A Zapovniti najbilsh znachimi z liva biti znachennyam m Biti y 1 yaki zalishilisya zapovniti nulyami S Zapovniti najbilsh znachimi biti znachennyam m v dodatkovomu kodi Biti y 1 yaki zalishilisya zapovniti nulyami P Zapovniti najbilsh znachimi x bit nulyami Sprava vid nih zapovniti biti znachennyam r Zapisati 0 v krajnij najmenshij znachimij pravij bit Viznachiti znachennya dvoh najmensh znachimih pravih bitiv dlya P Yaksho yih znachennya dorivnyuye 01 znajti znachennya P A Perepovnennya ignoruvati Yaksho yih znachennya dorivnyuye 10 znajti znachennya P S Perepovnennya ignoruvati Yaksho yih znachennya dorivnyuye 00 diya ne potrebuyetsya P zalishayetsya bez zmin i vikoristovuyetsya na nastupnomu kroci Yaksho yih znachennya dorivnyuye 11 diya ne potrebuyetsya P zalishayetsya bez zmin i vikoristovuyetsya na nastupnomu kroci Vikonati operaciyu arifmetichnogo zsuvu nad znachennyam yake bulo otrimane na drugomu kroci na odin bit vpravo Prisvoyiti P ce nove znachennya Povtoriti kroki 2 i 3 y raziv Vidkinuti krajnij najmensh znachimij pravij bit P Ce i ye dobutok m i r PrikladPorahuyemo dobutok 3 4 prijmemo m 3 i r 4 a x 4 i y 4 m 0011 m 1101 r 1100 A 0011 0000 0 S 1101 0000 0 P 0000 1100 0Vikonayemo cikl chotiri razi P 0000 1100 0 ostanni dva biti dorivnyuyut 00 P 0000 0110 0 Arifmetichnij zsuv vpravo P 0000 0110 0 ostanni dva biti dorivnyuyut 00 P 0000 0011 0 Arifmetichnij zsuv vpravo P 0000 0011 0 ostanni dva biti dorivnyuyut 10 P 1101 0011 0 P P S P 1110 1001 1 Arifmetichnij zsuv vpravo P 1110 1001 1 ostanni dva biti dorivnyuyut 11 P 1111 0100 1 Arifmetichnij zsuv vpravo Rezultat dobutku dorivnyuye 1111 0100 sho ye znachennyam chisla 12 Tehnika predstavlena vishe bude ne adekvatnoyu dlya vipadku koli mnozhnik yavlyaye soboyu najmenshe mozhlive negativne chislo yake mozhe buti predstavlene danoyu kilkistyu rozryadiv napriklad yaksho mnozhnik maye 4 biti ce znachennya 8 Cyu problemu yak odin iz sposobiv mozhna virishiti dodavannyam dodatkovogo bitu zliva dlya A S i P Potim vikonuyetsya privedenij vishe algoritm iz zminami u viznachenni bitiv A i S znachennya yake m ranishe zadavalosya dlya x pershih bitiv A teper bude zadavatisya dlya x 1 bitiv A Nizhche privedenij priklad bilsh tochnoyi metodiki z mnozhennyam chisla 8 na chislo 2 z vikoristannyam 4 oh bitiv dlya obidvoh mnozhnikiv A 1 1000 0000 0 S 0 1000 0000 0 P 0 0000 0010 0Vikonayemo cikl chotiri razi P 0 0000 0010 0 ostanni dva biti dorivnyuyut 00 P 0 0000 0001 0 Arifmetichnij zsuv vpravo P 0 0000 0001 0 ostanni dva biti dorivnyuyut 10 P 0 1000 0001 0 P P S P 0 0100 0000 1 Arifmetichnij zsuv vpravo P 0 0100 0000 1 ostanni dva biti dorivnyuyut 01 P 1 1100 0000 1 P P A P 1 1110 0000 0 Arifmetichnij zsuv vpravo P 1 1110 0000 0 ostanni dva biti dorivnyuyut 00 P 1 1111 0000 0 Arifmetichnij zsuv vpravo Rezultat dobutku dorivnyuye 11110000 pislya vidkidannya pershogo i ostannogo bita sho ye znachennyam chisla 16 PosilannyaRadix 4 Booth Encoding 3 bereznya 2021 u Wayback Machine in Booth s Algorithm JavaScript Simulator 11 lyutogo 2021 u Wayback Machine Implementation in Python 30 zhovtnya 2020 u Wayback Machine DzherelaAndrew D Booth A signed binary multiplication technique The Quarterly Journal of Mechanics and Applied Mathematics Volume IV Pt 2 1 17 lipnya 2012 u Wayback Machine Collin Andrew Andrew Booth s Computers at Birkbeck College 25 lyutogo 2021 u Wayback Machine Resurrection Issue 5 Spring 1993 London Computer Conservation Society Patterson David and John Hennessy Computer Organization and Design The Hardware Software Interface Second Edition ISBN 1 55860 428 6 San Francisco California Morgan Kaufmann Publishers 1998 Stallings William Computer Organization and Architecture Designing for performance Fifth Edition ISBN 0 13 081294 3 New Jersey Prentice Hall Inc 2000