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=XY се свежда към тази на операция събиране чрез смяна на знака на умалителя, т.е. Z=X+(-Y). Очевидно се налага изводът, че произтичащият от изложените правила алгоритъм за събиране или изваждане в прав код е неудобен за реализация, тъй като не притежава простотата на аналитичната система (1.2.1), особено в случаите на аритметическо изваждане. По тази причина този код практически не се прилага в устройствата за изпълнение на операциите събиране и изваждане. Правият код на числата обаче не може да бъде отречен, тъй като е изходен за други операции, изпълнявани върху тях.

 

 

Следващият раздел е:

1.6.2  Представяне на числата в допълнителен код  ( Two’s complement representation )