Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
L_R_1_KS.doc
Скачиваний:
6
Добавлен:
11.11.2019
Размер:
2.53 Mб
Скачать

Кодування чисел та знаків в комп’ютерах

В ККС для виконання операцій числа кодуються спеціальними машинними кодами - прямий, обернений, додатковий та модифікований коди. Розглянемо як двійкові числа зображаються цими кодами.

Прямий код. Вираз для створення прямого коду двійкового числа

X = 0, α 1, α 23... α 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

Цей результат буде розміщено в розрядній сітці обчислювального пристрою.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]