Лекція № 6 Арифметичні операції для чисел з фіксованою та плаваючою комою Числа, що мають цілу і дробову частину можуть бути представлені в мікро ЕОМ в формі з фіксованою комою, при цьому дробова та ціла частини можуть займати визначене число байтів. Ціла частина Дробова частина
Знак 2n-1 2n-2 20 2-1 2-(n-1) 2-n Рис.6.1 На рис.6.1 показано приклад формату для представлення двійкових чисел з фіксованою комою. Для коду знаку відокремлюється знаковий розряд - крайній зліва. В знаковому розряді 1 відповідає мінусу, а 0 - плюсу. Крім способу представлення чисел з фіксованою комою широкого розповсюдження отримав другий спосіб - представлення чисел з плаваючою комою(крапкою). При цьому число представлено в вигляді X = +/- Mq+/- p, де М - мантиса числа; q - основа системи відліку і р - порядок числа. Знак Знак порядку Модуль порядку мантиси Модуль мантиси
2 p 2p-1 ... 20 2-1 2-2 ... 2-n
Рис. 6.2 На рис. 6.2 показано приклад формату для представлення чисел з плаваючою комою. В цифрових приладах для цілих чисел з фіксованою комою множення починають з старшого розряду і зсув здійснюють вліво. 1101 * 101 (машинне множення) 1101 3-й частковий добуток (11010 зсув на один розряд вліво 0000 2-й частковий добуток 11010 (110100 зсув на один розряд вліво 1101 1-й частковий добуток 100001 добуток Для дробових чисел з фіксованою комою множення зручніше починати з молодшого розряду, а зсув робити вправо.
0,1101 Дробова частина * 0,101 (машинне множення) 0,1101 1-й частковий добуток 0,01101( зсув на один розряд вправо 0,0000 2-й частковий добуток 0,01101 0,01101( зсув на один розряд вправо 0,1101 3-й частковий добуток 1,000001 0,1000001 ( добуток Якщо множене, чи множник, або обоє разом мають цілу та дробову частини, то кома в числах не враховується, вони множаться як два цілих числа. Від отриманого результату з правої сторони відділяють комою m+n розрядів, де m - число дробових розрядів множеного, а n - число дробових розрядів множника. Ділення двійкових багаторозрядних чисел включає в себе дві операції: визначення знаку, визначення абсолютної величини. ділене / дільник = частка
Знаковий розряд під час ділення визначають так, як і під час множення. В цифрових приладах при виконанні операції ділення, так як і при виконанні операції алгебраїчного додавання використовують доповнений та модифікований коди. Для прискорення ділення використовують метод без відновлення залишку. При цьому методі можуть бути як додатні, так і від’ємні залишки при відніманні дільника. Якщо черговий залишок додатній, то в частку пишуть 1, а на наступному циклі роботи дільник віднімається із зсунутого на один розряд вліво залишку. Якщо черговий залишок від‘ємний, то в частку пишуть 0, а на наступному циклі роботи дільник додається до зсунутого на один розряд вліво залишку. Примітка: Метод використовується для дробових чисел, причому A<B, при A/B. Приклад. A=0,10011 B=0,11001 ПК -В 11,11001 МДК А 00,10011 МДК В 00,11001 ОК -В 11,00110 МДК-В 11,00111 ДК -В 11,00111 00,10011 00,11001 + 11,00111 0,110 11,11010 (11,10100 зсув вліво + 00,11001 00,01101 (00,11010 зсув вліво + 11,00111 00,00001 (00,00010 зсув вліво + 11,00111 11,01001 Арифметичні дії над числами з плаваючою комою Додавання: 1. Порядки доданків вирівнюють (порядок меншого числа приводять до порядку більшого, а мантису меншого числа зміщують вправо на відповідне число розрядів) 2. Мантиси додають 3. Пpи необхідності pезультат ноpмалізують Поpядок суми доpівнює поpядку більшого доданку + (можливо)1, якщо відбувалась ноpмалізація Пpиклад: 0,101*1011 + 0,11*1010 = (0,101 + 0,011) * 1011 = 1*1011 = 0,1*10100 0,101 робимо нормалізацію, так як мантиса >= 1. +0,011 1,000 Множення: 1. Поpядки додаються 2. Мантиси пеpемножуються 3. Пpи необхідності pезультат ноpмалізується Пpиклад: 0,101*1011 * 0,11*1010=0,01111*10101 0,101 * 0,11 0,101 ( 0,0101 + 0,101 0,1111 ( 0,01111
Віднімання:1. Як й пpи додаванні поpядки чисел виpівнюються 2. Мантиси віднімають (опеpацію віднімання заміняють опеpацією додавання, але пpи цьому мантиса дpугого числа беpеться в обеpненому або доповненому коді) 3. Пpи необхідності pезультат ноpмалізують Пpиклад: 0,101*1011 - 0,11*1010=(0,101 - 0,011)*1011=0,01*1011 0,101 ПК 1,011 ПК +1,101 ДК 1,100 ОК 10,010 ПК 1,101 ДК Ділення: 1. Поpядки віднімаються 2. Мантиси діляться 3. Пpи необхідності pезультат ноpмалізується Пpиклад: 0,0101*10100/0,1010*10101=(0,0101/0,1010)*10-001=0,1011*10-001 00,0101 00,1010 11,1010 МПК 4 - 5 = -1 11,0110 0,1011 11,0101 МОК 0000 0100 ПК 1000 0101 ПК 11,1011 11,0110 МДК +1111 1011 ДК 1111 1010 ОК 11,0110 1111 1111 ДК 1111 1011 ДК 00,1010 1000 0000 ОК 00,0000 +1 00,0000 1000 0001 ПК 11,0110 11,0110 11,1100 00,1010 00,0110 00,1100 11,0110 00,0010