Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторна 2_1_семестр.doc
Скачиваний:
1
Добавлен:
18.08.2019
Размер:
247.81 Кб
Скачать

3.3. Переповнення розрядної сітки.

Кількість розрядів ЕОМ, які використовуються для зображення числа є обмеженим. Тому сума двох чисел з однаковими знаками може виявитися більшою за модулем, ніж максимальне число, яке можна записати в задану кількість двійкових розрядів і результат виявиться неправильним. Таке явище називається переповненням розрядної сітки або виходом за межі діапазону представлення.

Розглянемо такий приклад 2.10.

А = +27d = +11011b → 0.11011bоб  → 0.11011bдоп

В = +19d = +10011b → 0.10011bоб  → 0.10011bдоп

А+В =  01.01110bоб =  1.01110bдоп = 1.10010bпр = -18d

|––––→0 

1.01110bоб = -17d

В цьому прикладі одиниця перенесення з старшого цифрового розряду попадає в знаковий розряд, а отже результатом додавання двох додатних чисел буде зафіксоване від'ємне число. Причина полягає в тому, що 5-ти цифрових розрядів не вистачає для запису числа +46d (А+В), оскільки діапазон чисел, які можна записати в ці розряди для доповненого коду становить від - 32 до +31.

В випадку додавання від'ємних чисел переповнення наступає тоді, коли відсутня одиниця перенесення з старшого цифрового розряду в знаковий розряд:

Приклад 2.11.

А = -22d = -10110b →  1.01001bоб →  1.01010bдоп

В = -25d = -11001b →  1.00110bоб →  1.00111bдоп

А+В =  10.01111bоб   10.10001bдоп = 0.10001bпр = +17d

|––––→1 

0.10000bоб = +16d

Зауважте, що в випадку переповнення розрядної сітки результат додавання в оберненому коді інший, ніж в для доповненого коду, однак якщо додавання коректне, то він не залежить від вибору коду.

В випадку додавання чисел з різними знакам результат завжди за модулем менший від найбільшого з доданків, а отже переповнення розрядної сітки відсутнє.

Існує два основних способи виявлення переповнення розрядної сітки. Перший з них полягає в порівнянні знаків доданків, та їхньої суми. Якщо знаки доданків рівні, а знак їхньої суми відрізняється, то це є ознакою переповнення (див. попередні два приклади). В випадку різних знаків доданків переповнення принципово бути не може. Такий спосіб виявлення переповнення можна використовувати за допомогою програмних засобів, якщо інший контроль відсутній.

Другий спосіб базується на використанні так званих модифікованих кодів. Модифікація кодів полягає в уведенні додаткового розряду, який розміщується перед знаковим. Цей розряд називається розрядом переповнення. Інколи кажуть, що модифікований код містить два знакових розряди. Додатні числа мають в знакових розрядах два нулі, а від'ємні - дві одиниці. Ознакою переповнення розрядної сітки є наявність в знакових розрядах різних цифр.

Приклад 2.12:

А = +27d = +11011b →  00.11011bоб.мод  → 00.11011bдоп.мод

В =  -19d =  -10011b →  11.01100bоб.мод  → 11.01101bдоп.мод

А+В =  100.00111bоб.мод  100.01000bдоп.мод = 0.01000bпр = 

|–––––→1  =+8d

00.01000bоб.мод = +8d

- в оберненому та доповненому кодах результат коректний.

Приклад 2.13.

А = -20d = -10100b →  11.01011bоб.мод  →   11.01100bдоп.мод

В = -18d = -10010b →  11.01101bоб.мод  →   11.01110bдоп.мод

А+В =  110.11000bоб.мод   110.11010bдоп.мод = некоректний

|–––––→1  результат

10.11001bоб = некоректний результат

Недоліком модифікованих кодів є вдвічі менший діапазон чисел, які можна представити за допомогою фіксованого числа розрядів.