- •Тема: виконання операцій додавання та віднімання чисел з фіксованою та плаваючою комою
- •1. Мета роботи
- •2.Основні теоретичні відомості Форми представлення чисел в комп’ютерах
- •Кодування чисел та знаків в комп’ютерах
- •Алгоритми виконання операцій додавання і віднімання двійкових чисел
- •3. Домащнє завдання.
- •4. Виконання роботи.
- •5. Контрольні запитання.
- •7. Література.
Кодування чисел та знаків в комп’ютерах
В ККС для виконання операцій числа кодуються спеціальними машинними кодами - прямий, обернений, додатковий та модифікований коди. Розглянемо як двійкові числа зображаються цими кодами.
Прямий код. Вираз для створення прямого коду двійкового числа
X = 0, α 1, α 2,α 3... α n має вигляд:
х, якщо х ≥ 0
Хпр =
1 – х, якщо х ≤ 0
Приклад 1. Х1 = + 0,1101, Хпр = 0,1101
Х2 = -0,10101, Хпр = 1- (0,10101) = 1,10101
Обернений код. Вираз для створення цього коду такий
х, якщо х ≥ 0
Хоб =
10 + х – 10 n, якщо х ≤ 0
Приклад 2. Х = - 0,100110
Хоб. = 10 – 0,100110 – 0,000001 = 1,011001
Порівнюючи число X з його Хоб, можна вивести таке правило: щоб записати від'ємне число в оберненому коді, потрібно у знаковому розряді цього числа поставити „1", а у числових розрядах „0", замінити на „1", а „1" на „0".
Приклад 3. Х = 0,110110, Хоб = 0,110110
Отже, для додатних чисел X = Хоб
Додатковий код. Вираз для створення додаткового коду двійкового числа X такий:
х, якщо х ≥ 0
Хдод =
10 + х, якщо х < 0
Приклад 4. X = -0,101010, Хдод = 10 + (- 0,101010) = 1,010110
Порівнюючи число X з його Хдод. Можна вивести правило: щоб записати від'ємне число у додатковому коді потрібно його записати спочатку у оберненому коді, а потім до молодшого розряду отриманого результату додати „1".
Для додатних чисел X = Хдод
Приклад 5. X = 0,1011101, Хдод = 0,1011101
Модифіковані коди. З точки зору побудови АЛП вони є зручними для виявлення переповнення розрядної сітки, які можуть бути отримані при виконанні операції додавання чисел. Ці коди відрізняються від простих машинних кодів тим, що на зображення знаку відводиться два розряди : „+" - зображається „00", а „-" - зображається „11”. Перетворення двійкових чисел у модифіковані прямий, обернений та додатковий коди виконуються за правилами, які були розглянуті раніше.
Приклад 6. X1 = + 0,1101101, Х2 = - 0,1101101 записати у додатковому та оберненому модифікованих кодах.
X1 прм = 00,1101101, X1 об.м = 00,1101101, Х1 дод. м = 00,1101101
Х2 прм = 11,1101101, Х2о6.м = 11.1101101, Х2 дод. м = 11,1101101
Перетворення чисел в заданий код здійснюється автоматично як при введенні чисел в ЕОМ, так і при виконанні операцій.
Алгоритми виконання операцій додавання і віднімання двійкових чисел
Алгоритми виконання операцій додавання і віднімання в позиційній однорідній системі числення з основою k відповідає алгоритмам в звичайній десятковій системі числення.
Результати операцій додавання / віднімання цифр х та у в одному розряді представляються двома цифрами:
цифрою q результат операції у даному розряді;
цифрою р перенесення в старшому розряді.
Правила формування цифр q та р для будь-якого k можна записати наступним чином.
а) для додавання б) для віднімання
x + y, якщо х + у < k x - y, якщо х ≥ у
q = q =
х + у – k, якщо х + у ≥ k k + х – у, якщо х < у
0, якщо х + у < k 0, якщо х ≥ у
р = р =
1, якщо х + у ≥ k - 1, якщо х < у
Функції q (x, y) та р (х, у) для операцій додавання/віднімання для k =2 можна представити таблично, рис. 1
а) додавання б) віднімання
рис.1
Оскільки при виконанні операцій додавання / віднімання може виникнути переповнення розрядної сітки, тобто результат буде сформовано неправильно, тому використовують модифіковані коди. Особливістю цих кодів є наявність двох знакових розрядів, у яких знак відображається двома однаковими цифрами. Ці цифри обробляються при виконанні також як і числові розряди. Поява в знакових розрядах модифікованого коду різних цифр"01" або „10" свідчать про переповнення розрядної сітки.
Приклад 1. х = -9 у = -3
Хпрм = 11,1001; Упрм = 11,0011
Хоб.м = 11,0110; Уоб.м = 11,1100
Хоб.м – 11,0110
+ +
Уоб.м – 11,1100
11,0010
циклічний перенос + 1
Zоб.м – 11,0011
Запишемо результат Zоб. м у прямому коді, використовуючи правила перетворення із оберненого коду в прямий.
Zпрm = 11,1100 це відповідає числу-12.
При виконанні модифікованого додаткового коду може з'явитися така комбінація 11.000...0 - це фіксується як переповнення розрядної сітки, тому що отримане число не вміщається в розрядній сітці.
Приклад 2. х = -7 у = -9 z = -16
Хпрм= 11,0111, Упрм= 11,1001
Хдк,м – 11,1001
+ +
Удкм - 11,0111
Zдкм - 11,0000
Бачимо, що для представлення числа -16 потрібно 5 двійкових розрядів.
Zдкм - 11,0000
Zп.к.м - 11,01111
____ + 1
11,10000, що відповідає числу -16.
Слід відмітити, що модифікований код дозволяє формувати вірний знак результату навіть при появі переповнення. Цей знак зберігається у другому (старшому) знаковому розряді.
01 - свідчать про позитивне переповнення розрядної сітки
10 - свідчать про від'ємне переповнення розрядної сітки.
Алгоритм додавання / віднімання чисел з фіксованою комою у прямих та додаткових кодах розглянемо на прикладах.
Приклад 3. х = ±15, у = ±7
а) х + у Хпрм = Хдкм = 00,01111 Упрм = Уд.к.м = 00,00111
z = 22
00,01111
+
00,00111
00.10110, що відповідає числу 22.
b) х - у; Хд.к.м = 00,01111; У д.к.м = 11,11001
z = 8
в ідкидається 1
00,0111
+
11,11001
Zп.к.м = 00,01000, що відповідає +8
с) - х + у ; Хд.к.м = 11,10001; У д.к.м = 00,00111
z = - 8
11,10001
+
00,00111
Zп.к.м = 11,11000 → Znp.м = 11,01000, що відповідає -8
d) –x - y; Хд.к.м = 11,10001; У д.к.м = 11,11001;
z = -22
відкидається 1
11,10001
+
11,11001
Zп.к.м = 11,01010 → Znp.м = 11,10110, що відповідає -22
Алгоритм додавання/ віднімання чисел з ,,блукаючою" комою будемо
розглядати для k = 2, тоді операнди X та У можна записати так X = 2А х, У = 2Ву, де А, В порядок операндів; X, У, які представлені „m" розрядами;
Мантиси х та у є n - розрядні правильні нормалізовані дроби, тобто 1/2≤|х|<1, 1/2≤|у|<1.
Операція додавання (віднімання) з „блукаючою комою" здійснюється в декілька етапів:
вирівнюються порядки доданків; молодший порядок збільшується до більшого, при цьому відбувається корекція мантиси числа, яке перетворюється;
виконується перетворення мантис в додаткові коди;
виконується додавання мантис за правилами, які розглядались для чисел з фіксованою комою;
— до отриманої суми дописується порядок доданків і якщо буде потрібно виконується нормалізація результату. Можливі два випадки денормалізації:
а) денормалізація вліво відповідає переповненню розрядної сітки;
б) денормалізація вправо, яка виникає, коли у прямому коді мантиси після коми є один або декілька нульових розрядів.
Приклад 4. Потрібно додати два числа X = + 0,10101 ∙ 10101; У = - 0,11001 ∙ 10011 - Вирівнюємо порядок числа В до порядку числа А
У = - 0,0011001 ∙ 10+101
Оскільки
РХдоп.м = 00,101
+
РУдоп.м = 11,101
00, 010
Рх > Ру на 2, то виконуємо зсув вправо на 2р. мантиси числа У.
— Додаємо мантиси чисел X та У в модифікованому додатковому коді:
Хдм = 00,1010100
+
Улм = 11,1100111
00,0111011 це прямий код додатної мантиси.
Результат отримали в ненормалізованій формі, оскільки після коми розряд мантиси має нульове значення. Для нормалізації цього числа необхідно зсунути всі розряди мантиси вліво на один розряд та зменшити на одиницю значення порядку.
Запишемо результат: 00,1110110 • 10100
Цей результат буде розміщено в розрядній сітці обчислювального пристрою.