Щербаков а. Н., Проскурін м. П., Грушко с. С. Прикладна теорія цифрових автоматів
Скачать 2.54 Mb.
|
9 МОДИФІКОВАНІ БІНАРНІ КОДИ9.1 Переповнення розрядної сіткиМи не раз спостерігали, як при складанні чисел з однаковими знаками, представлених у формі з фіксованою комою (ФФК), може виникнути переповнення розрядної сітки. При цьому, щоб уникнути спотворення резуль-тату, автомат повинен фіксувати переповнення і відповідно реагувати на це. 9.1.1 Переповнення при складанні прямих кодівОзнакою переповнення розрядної сітки суматора прямого коду є поява одиниці перенесення із старшого розряду цифрової частини числа. Приклади. Суматор ДСПК. а) А=+1010, В=+1101. Апр= 0\1010 (+10) +Впр= 0\1101 (+13) Спр= 0\0111 (+7≠ +23). Отримано спотворений (невірний) результат із-за втрати перенесення П зі старшого цифрового розряду. б) А=1100, В= 1010. Апр= 1\1100 +Впр= 1\1010 Спр= 1\0110 (-6≠-22). Тут теж отриманий невірний результат із-за втрати одиниці перенесення. 9.1.2 Переповнення при складанні доповняльних кодівОзнакою переповнення розрядної сітки суматора доповняльного коду при складанні позитивних чисел є негативний знак результату, а при складанні негативних чисел позитивний знак результату. Приклади: а) А= +0\1011; В= +0\1010 (перевірку отриманого результату проведіть самостійно). Адоп=0\1011 +Вдоп=0\1010 Сдоп≠1\0101 б) А= 0\1011; В= 0\1001 (перевірку отриманого результату проведіть самостійно). |
ПРАВИЛО: для переводу бінарного числа з прямого коду в модифіковний доповняльний код, аналізують знак числа. Якщо в знаковому розряді знаходиться мінус (одиниця), то в два знакових розряди записують одиниці, а всі цифри числа інвертують (одиниці заміняють нулями, а нулі одиницями), потім до останньої молодшій цифрі (молодшого розряду) числа додають одиницю. Якщо в знаковому розряді стоїть нуль, то додають ще один, а число не змінюють. ПРАВИЛО: для переводу бінарного числа з прямого коду в модифіковний обернений код, аналізують знак числа. Якщо в знаковому розряді знаходиться мінус (одиниця), то в два знакових розряди записують одиниці, а всі цифри числа інвертують (одиниці заміняють нулями, а нулі одиницями). Коли в знаковому розряді стоїть нуль, то додають ще один, а число не змінюють. При виконанні операцій алгебраїчного додавання або вирахування два знакових розряди приймають участь в операції, як рівноправні цифрові розряди. Після виконання операцій, стан знакових розрядів (знак результату) встановлює лівий знаковий розряд, а наявність чи відсутність переповнення правий знаковий розряд. Знакові розряди можуть мати наступні комбінації станів при будь- яких значеннях операндів А і В: - 00 результат числа позитивний, переповнення немає; - 01 результат числа позитивний, було переповнення; - 11 результат числа негативний, переповнення немає; - 10 результат числа негативний , було переповнення. |
У машинному представленні чисел, представлених в модифіко-ваному коді, використовується (n+2) розрядів: з них два знакових, кома опускається, встановлюється постійний коефіцієнт формату Кф. Сигнал переповнення виробляється по наступній математичній моделі (тут знак позначає логічну операцію множення «і», а риска над символом Sg – логічну операцію інверсії
γ= 1, якщо Sg1 Sg2= 1
Sg1 Sg2= 1, і γ = 0 в інших випадках.
Приклади: а) А= 0\1011 (+11), В= 0\1010 (+10).
Амд=00\1011
+Вмд=00\1010
Смд= 01\0101=00\10101 (+21)
Тут ознакою переповнення є 1 в знаковому розряді. За цією ознакою проводиться зрушення числа вправо з одночасним збільшенням коефіцієнта формату Кф на 1 і відновленням Sg1 (по значенню Sg2)обох розрядів Sg1Sg2\, тобто знаку 00 результату С числа, далі перевіряється нормалізація числа (наявність 1 після коми в числі).
б
Амд=11\0101
+ Вмд=11\0111
Смд=10\1100 Було переповнення. Потрібен зсув вправо і відновлення
знака. Смд=11\01100 результату і перетворення його в прямий код.
Смпр=11\10011
+ 1, тоді Спр= 11\10100 (20).
) А= 0\1011 (-11), В= 0\1001(-9). Перетворимо в машинну форму: Ампр=11\1011, Вмпр=11\1001. Оскільки обидва числа негативні і операція складання виконується на ДСДК, то в суматор числа поступають в доповняльному коді.
Аналіз розрядів знаку результату (10 див. третю строку) показав, необхідність відновлення його (до 11), зрушуючи число вправо на один розряд, з одночасним збільшенням коефіцієнта формату Кф на 1. Результат негативний, і тому представлений у доповняльному коді. Тому результат перетвориться в істиний (прямий код) через інвертування (обернений код) і з додаванням +1 в молодший розряд.