![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
1.8 Множення у додатковому коді (СРС)
Щоб виключити ланцюги циклічних переносів найчастіше використовують додатковий код. При множенні чисел у додатковому коді необхідно робити корекцію на основу СЧ.
При множенні чисел у додатковому коді можливі 4 випадки:
1) А > 0, В > 0 - як у прямому коді
2) А > 0, В <0 [В]д=1-В
[А]д * [В]д= А*(1-В) = А- АВ
э=1- ~B~
3) А < 0, В > 0 [А]д=1-А
[А]д * [В]д= (1-А) * В = В- АВ
э=1- ~A~
4) А < 0, В < 0
[А]д*[В]д==(1-А)*(1-В)=1-В-А+АВ
з = В+А- корекція
У додатковому коді необхідна корекція як знакової так і числової частини. Існує 2 способи корекції:
1) при формуванні "+";
2) після формування " - ";
Корекція при від'ємному множнику А > 0, В <0. У цьому випадку здійснюється множення множимого А на знакову одиницю множника В.
Розглянемо А як від'ємне і тому необхідно виконувати віднімання множимого, або додавання з протилежним знаком.
При даній корекції формується вірно цифрова та знакова частина.
Приклад: А = 0,1011 В = -0,1101
[В]д=1.0011
[-А]д= 1.0101
0,1011
1.0011
1,0101
1,01110001
Корекція при від'ємному множимому А < 0, В > 0 залежить від схем множення, бо необхідно виконувати зсув за правилом додаткового модифікованого коду.
Приклад: А = -0,1011 В = 0,1101
[А]мд= 11.0101
[В]мд= 00.1101
11,0101
00.1101
11,0101
11,10101
11,110101
11,0101
11,001001
11,1001001
11.0101
10,1110001
11,01110001
Корекція при А < 0, В < 0
Приклад: А = -0,1011 В = -0,1101
[А]мд=11.0101
[B]мд=11.0011 [-А]. 1011
11,0101
11.0011
00,1011
00,00000
1111110101
00,10001111
1.9 Прискорення операції множення.
Методи прискорення операції множення.
Швидкість операції множення впливає на швидкодію машини, тому існують методи прискорення операції множення. Вони бувають логічними та аппаратними:
Логічні: при застосуванні цих методів основна структура арифметичних ланцюгів не змінюється, ускладнюється лише схема управління.
1) пропуск тактів додавання, тобто не виконується додавання, якщо наступна цифра множника 0. Швидкість множення збільшується приблизно в два рази.
2) використання ланцюгів цифр множника, тобто представлення числа як сукупності послідовностей нулів або одиниць. При цьому враховується, що час множення зменьшується при наявності ланцюгів.
3) одночасне множення на два розряди множника. Суть методу в тому, що число розбивається на групи таким чином, що у кожній групі лише одна значима цифра.
4) множення у кратних СЧ. Використовується СЧ з кратними основами, як правило меньшу основу приводять до більшої.
5) запам'ятовування проміжних переносів;
Аппаратні: потребують для свого застосування додаткового обладнання. Бувають: матричні, табличні, конвеєрні. Матричний використовують при наявності додаткових сумматорів, які можуть додавати кілька часткових добутків.
1.10 Операції ділення.
При діленні чисел знакова та цифрова частини розглядаються як правило окремо. Існує два алгоритми ділення:
1. Алгоритм з поновленням залишку;
2. Алгоритм без поновлення залишку;
Алгоритм ділення з поновленням залишку
При діленні можна зсовувати дільник, а можна зсовувати ділене, якщо зсовуємо дільник ми зсовуємо ліворуч, а ділене праворуч.
Ділення якщо А>В де А- ділене, а В- дільник знак частки визначається додаванням по модулю 2 діленого та дільника.
Цифрова частина визначається за алгоритмом ділення з поновленим залишком:
Після кожного віднімання перевіряють знак залишку, якщо залишок додатній то в молодшому розряді частки записують 1, якщо від’ємний то 0, і поновлюють залишок додаванням до нього дільника, а потім виконувати наступне віднімання. Перед кожним відніманням необхідно виконувати зсув діленого на 1 розряд праворуч. Після обробки всіх розрядів діленого останній результат віднімання є залишком від ділення.
Якщо число ділиться націло то залишок = 0, інакше утворюються цифри після коми – продовження ділення.
Приклад:
0,111111010 10110
1,01001
10,010001
1,01001
1,11010
0,10111
0,100010
1,01001
10,010111
1,01001
10,000000
Алгоритм ділення без поновлення залишку
Якщо залишок додатній то перша цифра частки 1, якщо від’ємний то 0. Виконується зсув і додається дільник з протилежним знаком.
Приклад:
0,111111010 10110
1,01001
10,010001
1,01001
1,110100
0,10111
10,010111
1,01001
0,100000
Ділення чисел коли .
При діленні правильних дробів можливе переповнення розрядної сітки коли ділене по модулю більше ніж дільник по модулю.
Ознакою переповнення є поява 1 у псевдо знаковому розряді частки.
При діленні обчислюється окремо знакова та цифрова частина. Цифрова частина визначається діленням цифрових частин вихідних чисел, як і у попередньому випадку 2 алгоритми ділення:
Алгоритм з поновленням залишку:
1. Дільник віднімається від діленого і визначається знак залишку, якщо залишок >0, чи додатній, то ділене по модулю більше ніж дільник по модулю і псевдо знаковий розряд частки =1, у цьому випадку формується ознака переповнення розрядної сітки і операція припиняється.
Якщо залишок від’ємний то псевдо знаковий розряд =1, і проводиться додавання до залишку дільника для поповнення.
2. Проводиться зсув поновленого дільника на 1 розряд ліворуч і відбувається повторне віднімання дільника.
Знак остачі визначає першу цифру частки, якщо залишок додатній то вона 1, а від’ємний 0.
3. Якщо залишок додатній то він зсовується на один розряд ліворуч і від нього віднімається дільник для визначення наступної цифри частки.
Якщо залишок від’ємний до нього додається дільник для поповнення попереднього залишку, а потім зсовується на один розряд ліворуч і від нього віднімається дільник для визначення наступної цифри частки.
Даний цикл повторюється до отримання необхідної точності частки.
Зауваження:
Цифри частки отримуються як інвертні значення знакових розрядів поточних залишків.
|
Приклад 1:
00,101 Знос: 0,1101
11,010
11,111
00,110
00,101
01,010
11,010
00,100
01,000
11,010
00,010
00,100
11,010
11,110
00,110
00,100
01,000
11,010
00,010
Ділення з поновленням залишку
Це аритичний процес – тобто коли треба робити поновлення залишку, а коли не треба. Саме тому найчастіше використовується алгоритм ділення без відновлення залишку. У якому цифра частки визначається за алгоритмом:
Поточний залишок зсовується на один розряд ліворуч і до нього алгебраїчно додається дільник з протилежним знаком поточного залишку. Знак наступного отриманого залишку визначає наступну цифру частки, якщо залишок від’ємний то цифра 0, якщо додатній то 1.
Приклад:
А= 0,101
В= 0,110 Знос: 0,1101
00,101
11,010
|
11,111
11,110
00,110
00,100
01,000
11,010
00,010
00,100
11,010
Ділення чисел у формі з рухомою комою.
Число А у формі з рухомою комою представляється у вигляді:
1. 1. На першому етапі ділення чисел з рухомою комою визначається знак частки.
2. 2. Необхідно визначити порядок частки шляхом віднімання порядку діленого від порядку дільника.
3. 3. Ділення мантис чисел за правилом ділення чисел у формі з фіксованою комою.
Якщо ділене по модулю більше ніж дільник по модулю необхідно зробити корекцію для виконання умови , для того щоб А стало менше необхідно збільшити порядок діленого і зсунути мантису праворуч, і повторити усі дії спочатку.
Приклад 1:
|
00,111010
11,111101
11,111010
00,111101
00,110111
01,101110
11,000011
00,110001
01,100010
11,000011
00,100101
01,001010
11,000011
00,001101
00,011010
11,000011
11,011101
10,111011
00,111100
11,110111
11,101110
00,111101
00,101011
Знос:
Відповідь: 00000111101*2
2. Логічні операції ЕОМ (СРС)
Усі пристрої ЕОМ складаються з елементів логічних схем. Робота цих схем заснована на законах і правилах алгебри логіки, що оперує двома поняттями: істинності і хибності висловлення. Відповідно до такої двійкової природи висловлень умовилися називати їх логічними двійковими змінними і позначати 1 у випадку істинності і 0 у випадку хибності. Прикладами логічних змінних є висловлення: А = “Земля плоска”, У = “Автомобіль має двигун”.
На підставі цих висловлень можна записати А = 0; У = 1, тому що висловлення А помилкове, а висловлення В істинно.
Висловлення можуть бути простими і складними: прості містять одне закінчене твердження, складні утворяться з двох чи більшого числа простих висловлень, зв'язаних між собою деякими логічними зв'язками. Формалізація і перетворення зв'язків між логічними змінними здійснюється відповідно до правил алгебри логіки, називаною алгеброю Буля (англійський математик).
Дві логічні змінні А и В, що приймають значення 0 чи 1, можуть утворювати логічні функції. З 16 можливих функцій двох змінних найбільший практичний інтерес представляють функції заперечення, логічного множення і логічного додавання.
Логічне заперечення НЕ змінної А є логічна функція Х, що істинна тільки тоді, коли неправда А, і навпаки.
В алгебрі логіки будь-які функції зручно зображувати у виді таблиці відповідності всіх можливих комбінацій вхідних логічних змінних і вихідний логічний функції, називаною таблицею істинності. Для функції логічного заперечення НЕ ця таблиця має вид
А | ||
Х |
де А – вхідна змінна, Х – вихідна функція.
Функцію НЕ в символах алгебри логіки записують у такий спосіб:
Х = .
Графічно ця функція позначається кружком на чи вході виході логічного символу.
Приймемо положення перемикача за вхідну змінну і позначимо замкнутий стан ключа логічною одиницею (Х = 0), а розімкнуте – логічним нулем (Х = 0).
Логічне множення И двох змінних А и В є логічна функція Х, що вірна тільки тоді, коли одночасно вірні вхідні змінні. Для функції логічного множення таблиця істинності має вид
А | ||||
У | ||||
Х |
В алгебрі логіки логічне множення И іноді називають конъюнкцией і записують у виді Х = А * У чи Х = А В. графічно функція И позначається у вигляді прямокутника, усередині якого ставиться символ &.
Логічна АБО сума змінних А и В є логічна функція Х, що істинна, коли хоча б одна з вхідних функцій щира. Для логічної суми таблиця істинності має вид
А | ||||
В | ||||
Х |
Логічна сума в символах алгебри логіки записується так:
Широке поширення одержали в реалізації сучасних логічних схем функції АБО-НІ, І-НІ, що виключають АБО. Таблиця істинності функцій відповідно має вид
А | А | |||||||||
У | В | |||||||||
Х = АБО-НІ | Х = І-НІ |
А | ||||
В | ||||
Х = А ![]() ![]() |
У табл. 1.4 приведений повний перелік функцій двох аргументів. Функції, утворені логічними змінними, можна перетворювати відповідно до чи правил законами алгебри логіки. При цьому прагнуть мінімізувати логічне вираження, тобто привести його до виду, зручному для практичної реалізації на логічних елементах.
Функції f0 (X, Y) f1 (X, Y) f2 (X, Y) f3 (X, Y) f4 (X,Y) f5 (X, Y) f6 (X, Y) f7 (X, Y) f8 (X, Y) f9 (X, Y) f10 (X, Y) f11 (X, Y) f12 (X, Y) f13 (X, Y) f14 (X, Y) f15 (X, Y) | Аргументи Х 0 0 1 1 Y 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 | Позначення
функції
X ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Назва функції Константа 0 Конъюкция (логічне І) Заборона по Y (заперечення імплікації) Змінна Х Заборона по Х (заперечення імплікації) Змінна Y Сума по модулі 2 Диз'юнкція (логічне АБО) Стрілка Пірса (заперечення диз'юнкції) Еквівалентність Заперечення Y (функція НЕ) Імплікація від Y k X Заперечення Х (функція НЕ) Імплікація від Х к Y Штрих Шеффера (заперечення конъюкції) Константа 1 |
Виключна диз'юнкція (також операція XOR, додавання за модулем два) — двомісна логічна операція, що приймає значення «істина» тоді і тільки тоді коли значення «істина» має рівно один з її операндів. Виключна диз'юнкція є запереченням логічної еквівалентності.
Для запису операції використовуються позначення:
^
Виключну диз'юнкцію деколи задають через інші логічні операції, наприклад:
Таблиця істинності виглядає таким чином:
![]() | ![]() | ![]() |
хибність | хибність | хибність |
хибність | істина | істина |
істина | хибність | істина |
істина | істина | хибність |
Результат застосування виключної диз'юнкції такий самий як і від додавання за модулем 2. Тому і саму операцію часто називають додаванням за модулем 2.
Виключна диз'юнкція у програмуванні
В мовах C/C++ (а також Java, C#, Ruby, PHP, JavaScript) дана операція позначається символом «^», в мовах Паскаль, Delphi, Ада - зарезервованим словом XOR. Додаванн виконується побітово для двох операндів. Наприклад,
якщо | |
a = | ![]() |
b = | ![]() |
тоді | |
a ^ b = | ![]() |
Дата публикования: 2014-12-11; Прочитано: 517 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!