У загальному випадку доповняльний код (ДK), наприклад, за чотири-розрядним форматом можна пов’язати із звичайним зображенням цілих чисел А наступним співвідношенням:
(А) , ( 1.3 )
де (А) - доповняльний код цілих чисел А за чотирирозрядним форматом;
16=24 – зміщення (параметр відображення) чотирирозрядного допов-няльного коду (кількість двійкових комбінацій чотирипозиційного доповняльного коду);
- сума за модулем 16 зміщеного коду (16+А) (неподільна чотирипозиційна остача ділення безвід’ємного зміщеного коду (16+А) на 16);
4 – довжина розрядної сітки машинного зображення чисел А у доповняльних кодах.
Очевидно, що залежність (1.3) у нескінченому діапазоні зміни аргументу являє собою періодичну функцію з періодом Т = ±16, ±32 і т.д. (рис.1.3,а).
Із графіка функції (1.3) випливає неоднозначність залежності через те, що кожному значенню функції (1.3) відповідає незчисленна множина значень аргументу А. У діапазоні основного періоду (рис.1.3,б) неоднозначність функції (16+A)m16 усувається тільки у скороченому діапазоні зміни аргументу від (-8) до (+7), який можна визначити для функції ( 1.3 ) як зону її повної однозначності (рис.1.4).
У зазначеній зоні однозначності (рис.1.4) функції (1.3) кожному додатному числу А і нулю відповідає образ функції (16+A)m16 у множині двійкових наборів від 0000 до 0111 (010 ¸ 710), а кожному значенню від’ємного цілого числа А – одне значення доповняльного коду (А)4DK із множини двійкових наборів від 1000 до 1111 (810 ¸ 1510). Узагальнюючи, маємо:
0 ХХХ, якщо +710 ≥ А ≥ 0;
1 ХХХ, якщо -810 ≤ А ≤ - 1,
де 0 , 1 - стан знакового розряду доповняльного коду відповідно за додатним і від’ємним значеннями аргументу А ;
ХХХ – трипозиційна цифрова частина доповняльного коду.
Рисунок 1.3 – Область значень і визначення функції (1610 +А)m16 в межах
числової прямої А (а)та у проміжку основного періоду (б) Т = ±1610 :
(1610 + А)m16 - позначення остачі функції (1610 + А) за модулем 1610
відповідно в межах числової осі А і основного періоду Т = ±1610
Рисунок 1.4 – Зона однозначності подання чисел А із знаком
чотирипозиційними доповняльними кодами (А) = (16 +А)m16 у
проміжку основного періоду між (-810) і (+710)
Розглянемо типові приклади відображення чисел із знаком у доповняльних кодах (у зоні однозначності) за зазначеним єдиним для додатних і від’ємних чисел “арифметичним” способом ( 1.3 ).
Нехай А = +102 ( +210 ). Тоді згідно з ( 1.3 ) маємо:
(А) = [1610 +(+210)]4m16 =[1810]4m16 = [210]4 = 0 010,
де 0 - стан знакового розряду доповняльного коду цілого додатного числа А=+102.
Нехай тепер А = -102 (-210) . Тоді згідно з (1.3) маємо:
(А) = [1610 +(-210)]4m16 =[1410]4 = 1 110,
де 1 - стан знакового розряду доповняльного коду цілого від’ємного числа А = -102.
На основі “арифметичного” виразу (1.3) можна визначити “логічний” спосіб перетворення звичайного зображення цілих чисел із знаком у доповняльний код:
(1610 + А )4m16 = | A |4, якщо (+7) ≥ А ≥ 0 ; ( 1.4 )
(А) = (1610 + А )4m16 = [16 - | A|4]4 =
=1510 - | A|4 + 1 = + 1, якщо - 8 ≤ А ≤ - 1, ( 1.5 )
де (А) - чотирипозиційний доповняльний код цілих чисел А із знаком;
| А |4 – чотирипозиційне зображення модуля цілих чисел із знаком у проміжку від (-810) до (+710).
Розглянемо приклади перетворення звичайного зображення цілих чисел за «логічними» алгоритмами (1.4) і (1.5).
Нехай А = -310 = -112. Тоді згідно з (1.5 ) маємо:
(А)4DK = + 1 = + 1 = + 1 =
= + 1 = 1100 + 1 = 1 101. ( 1.6 )
Нехай тепер А = +310 = +112. Тоді згідно з (1.4 ) маємо:
(А) = | A |4 = |+11|4 = 0 011.
Приклади кодування у доповняльних кодах чисел А із знаком для діапазону визначення функції ( 1.3 ) від (-810) до (+710) подано на рис. 1.5.
Для спрощення виявлення ознаки переповнення при виконанні операцій додавання чисел на суматорах арифметичних пристроїв використо-вують також модифіковане зображення звичайного доповняльного коду – модифікований доповняльний код (МДK).
У загальному випадку модифіковане зображення, наприклад, чотирипо-зиційного доповняльного коду чисел А ((А) ) можна подати співвідношен-ням:
(А) = (3210+ А )m32 ( 1.7 )
На основі “арифметичного” виразу (1.7) визначається “логічний” ал-горитм перетворення звичайного чотирипозиційного доповняльного коду (А) у його п’ятипозиційний модифікований доповняльний код (А) :
(3210 + А ) = | А |5 = 0 (А) ,
якщо 0 < A ≤ ( +710 ) ; ( 1.8 )
(А) = (3210 + А )5 m32 = (1610 + (1610 + А ))5 =
= (1610 + 1610 – | A |) =1610 + А =
= 1 А , якщо ( -810) ≤ A ≤ ( -1 ), ( 1.9 )
де А – зображення чотирипозиційного доповняльного коду (знаковий і цифрові розряди чотирипозиційного доповняльного коду чисел А).
( А ≥ 0)
| |
Рисунок 1.5 – Приклади подання чисел А із знаком у проміжку
між (-810) і (+710) чотирипозиційними доповняльними кодами
(ХХХХ) = (1610 +А)m16
Таким чином, згідно з (1.8) і (1.9) перетворення звичайного чотири-позиційного формату доповняльного коду у п’ятипозиційний модифікований доповняльний код (МДK) потрібно виконувати наступним чином. Чотири молодших розряди МДK заміщуються безпосередньо розрядами звичайного чотирипозиційного доповняльного коду і знаковий розряд звичайного ДK (0 або 1) додатково дублюється у найстаршому (знаковому) розряді МДK. Отже, у МДK чисел А комбінація 00 у двох старших розрядах відповідає коду додатних чисел А, а комбінація 11 - коду від’ємних чисел А .
У графічній формі відповідність між числами А із знаком у проміжку між (-810 ) і (+710 ) і їх поданням у МДK наведено на рис.1.6.
Приклади двійкового зображення чисел у МДK для зазначеної вище області визначення аргументу функції (1.7) подано на рис.1.7.
Рисунок 1.6 - Графічна інтерпретація подання чисел А із
знаком у проміжку між (-810) і (+710) п’ятипозиційними МДК
( А ≥ 0)
| |
A < 0 A ≥ 0
Рисунок 1.7 – Приклади подання чиселА із знаком у
проміжку між (- 810) і (+710) п’ятипозиційними МДK