Лекція № 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