- •Машинні алгоритми операції множення
- •Алгоритм множення із старших розрядів другого множника та зсувом першого множника праворуч при кожному кроці на один розряд.
- •Множення з молодших розрядів із зсувом часткових сум праворуч.
- •Множення із старших розрядів другого множника із зсувом часткової суми ліворуч.
Множення із старших розрядів другого множника із зсувом часткової суми ліворуч.
-
11001010
00000000
10100111
00000000
00000000
Початковий стан
-
1
10010100
00000000
10100111
00000000
10100111
Перший крок
-
1
00101000
00000000
10100111
00000001
11110101
Другий крок
-
0
01010000
00000000
10100111
00000011
11101010
Третій крок
-
0
10100000
00000000
10100111
00000111
11010100
Четвертий крок
-
1
01000000
00000000
10100111
00010000
01001111
П’ятий крок
-
0
10000000
00000000
10100111
00100000
10011110
Шостий крок
-
1
00000000
00000000
10100111
01000001
11100011
Сьомий крок
-
0
00000000
00000000
10100111
10000011
11000110
Восьмий крок
Як бачимо, всі перелічені алгоритми мають однаковий результат.
Прискорені алгоритми множення. Алгоритм Бута
00
01
10
11
Машинні алгоритми операції ділення
Машинне ділення організовано за тією ж схемою, як й звичайне десяткове ділення. Тобто, починаючи зі старших розрядів діленого, віднімається дільник і формує чепнрві цифри результату, починаючи зі старшої. Якщо результат віднімання додатній, то чергова цифра результату ділення, починаючи із старшої цифри, дорівнює 1, інакше 0 і повторювати ці дії, зсуваючи праворуч на один розряд дільник, доки кількість розрядів діленого операнду, не буде менше за кількість цифр дільника.. Якщо при черговому відніманні дільника результат буде від’ємний, то треба відновити від’ємний залишок. Від’ємний залишок можна і не відновлювати, якщо на наступному кроці віднімання замінити на додавання. Припустимо, що і-му кроці маємо від’ємний результат. Тобто, ми віднімали 2і*D, де D – це дільник. При відновленні від’ємного залишку виконується +2і*D та чергове віднімання -2(і-1)*D, тобто фактично виконується додавання +2(і-1)*D. Звідси існує два алгоритми множення: з відновленням від’ємного залишку та без його відновлення.
При діленні із відновленням від’ємного залишку алгоритм складається із таких кроків: 1) до старшої частини числа, що ділиться, додається додатковий код дільника, якщо результат додатній, чергова цифра результату ділення буде 1. 2) Від’ємний залишок відновлюється за допомогою прямого коду дільника. Вказані дії повторюються циклічно. Кількість кроків в циклі обмежується останньою двійковою цифрою діленого.
В разі ділення без відновлення від’ємного залишку маємо два коди дільника – прямий та додатковий. Цей алгоритм заснований на тому, що замість відновлення від’ємного залишку виконується додавання прямого коду дільника до від’ємного залишку.
Алгоритм машинного ділення у відповідних машинних командах реалізований як мікропрограма (низка мікрокоманд).
Приклад машинного ділення за алгоритмом з відновлюванням від’ємного залишку. Для прикладу візьмемо результат попереднього множення та один з множників. В результаті ділення отримаємо другий множник.
1000001111000110
-11001010
1011100111000110 від’ємний залишок
+11001010 відновлення
1000001111000110
-11001010
0001111011000110 чергова цифра результату - 1
-11001010
1110110001000110 від’ємний залишок
+11001010 відновлення
0001111011000110 чергова цифра результату - 0
-11001010
0000010110000110 чергова цифра результату - 1
-11001010
1111100011100110
+11001010 відновлення
0000010110000110 чергова цифра результату – 0
-11001010
1111110100110110
+11001010 відновлення
0000010110000110 чергова цифра результату – 0
-11001010
0000001001011110 чергова цифра результату - 1
-11001010
0000000011001010 чергова цифра результату - 1
-11001010 чергова цифра результату - 1
Як бачимо, в результаті ділення тримали значення другого множника з попереднього прикладу.