1.6.1
Представяне
на числата в
прав код
Sign-Magnitude
representation
Когато
машинният
код е
построен в
пълно съответствие
с
естествения
вид на
числото и с
горе
изложеното,
той се нарича
прав
код.
Правият код
на едно
двоично
число
формално
може да се определи
по следния
начин:
а) за
числа с дясно
фиксирана
запетая:
б) за
числа с ляво
фиксирана
запетая:
Така
правият код
на едно
число, като
съдържание
на
разрядната
мрежа, ще
представлява
двоична комбинация
от вида:
По
силата на
това
определение
може да се каже,
че на всяка
кодова
комбинация,
която може да
се представи
в разрядната
мрежа, съответства
едно
единствено
число.
Изключение прави
числото 0, в
съответствие
на което застават
две
комбинации:
(000...0) и (100...0), които са
във връзка с
приетата
кодировка за
знака на числото.
В този смисъл
тези две
комбинации
се интерпретират
като код на
числата +0 и -0
съответно.
Освен това
има смисъл да
отбележим специално
факта, че диапазонът
на така
представяните
числа е напълно
симетричен
относно
нулата, т.е.
Правият код на представимите числа е удобен с това, че цифровата част на разрядната мрежа (вижте фигура 1.1.6.1.3) съдържа модула на числото. Модулът на числото съдържа цифрите от естествения вид на числото, които са крайно необходими в редица случаи и в частност при прилагане на алгоритмите за преобразуване на числото от една бройна система в друга.
Операциите
събиране и
изваждане,
приложени
върху числа,
представени
в прав код,
следва да се
разглеждат
като
алгебрически,
тъй като
числата са
представени
със знак.
Изпълнението
на тези
операции е
свързано с
определяне
на фактическата
аритметична
операция.
Това става
чрез анализ
на знака на
операцията и знаците
на
операндите.
Определената
фактическа
аритметична
операция се
изпълнява върху
модулите на
операндите
по начина,
описан в § 1.2 или
в § 1.3.
Аналогията
обаче не е
пълна, тъй
като
модулите на
операндите в
случая са (n-1)-разрядни
числа. При
събиране например,
определянето
на
необходимата
аритметична
операция е
показано в
таблица 1.6.1.1.
Таблица
1.6.1.1
Операция
събиране
Z = X + Y |
|||
Знак
на X |
Знак
на Y |
Аритметична
операция |
Знак
на Z |
+ |
+ |
|X| + |Y| |
+ |
|
|
|
|
+ |
- |
|X| - |Y| , ако |X| |Y|; |
+ |
+ |
- |
|Y| - |X| , ако |X|< |Y|. |
- |
|
|
|
|
- |
+ |
|X| - |Y| , ако |X| |Y|; |
- |
- |
+ |
|Y| - |X| , ако |X|< |Y|. |
+ |
|
|
|
|
- |
- |
|X| + |Y| |
- |
От
таблицата се
вижда, че фактическата
аритметична
операция
между
модулите на
операндите
се определя
от знаците
им, а знакът
на резултата
– от знака на
числото с
по-големия
модул.
Изпълнението
на операция
изваждане Z=X–Y се свежда
към тази на
операция
събиране чрез
смяна на
знака на
умалителя,
т.е. Z=X+(-Y).
Очевидно се
налага
изводът, че
произтичащият
от
изложените
правила алгоритъм
за събиране
или
изваждане в
прав код е
неудобен за
реализация,
тъй като не
притежава
простотата
на
аналитичната
система (1.2.1),
особено в
случаите на
аритметическо
изваждане. По
тази причина
този код
практически
не се прилага
в
устройствата
за изпълнение
на
операциите
събиране и
изваждане.
Правият код
на числата
обаче не може
да бъде
отречен, тъй
като е
изходен за
други операции,
изпълнявани
върху тях.
Следващият
раздел е:
1.6.2
Представяне
на числата в
допълнителен
код ( Two’s complement
representation )