1.6.4
Преобразуване
на машинните
кодове
Machine codes
conversion
След
като в §
1.2 и в § 1.3 беше
изяснено, че
оперирането
с естествения
вид на
числата е
затруднено,
беше потърсено
удобно за тях
представяне.
Такова беше
намерено в
лицето на
допълнителния
код.
Удобството
на този код
се състои в това,
че
оперирайки в
негови
условия, се
освобождаваме
от
проблемите,
които
пораждат знаците
на числата. С
други думи,
при операция
събиране и
при операция
изваждане, в
крайна
сметка ние
винаги
събираме две
кодови
комбинации.
Свеждането
на тези
операции до
обикновено n-битово
събиране се
постига
благодарение
на теорема (1.6.2.17).
Тъй като
операция
събиране има
своята техническа
реализация,
то вече е
напълно ясно,
че
оперирането
с числата е принципно
решима
задача.
Това, което остава все още неизяснено е как ще се пренасяме от нашите естествени условия в условията на горе споменатата теорема и обратно. Следователно тук става въпрос за това как от естествения вид на числата ще получаваме техния допълнителен код и обратно, когато получим резултат, който е в допълнителен код, как ще го преобразуваме в неговия естествен вид. Въпросът е актуален, тъй като математическата формула (1.6.2.10), с която определихме кода, съдържа в себе си операция изваждане, от която всъщност искахме да се избавим. От този “омагьосан кръг” разбира се има изход и той ще бъде изяснен по-долу.
Преходите
от естествен
вид на
числото към код
и обратно
следва да се
постигат
чрез операции,
които имат
техническа
реализация, ето
защо чисто
математическото
определение
не е
достатъчно.
За да получим
необходимото
решение на
проблемите, свързани
с преходите,
следва да
включим в разглеждане
някои
допълнителни
обстоятелства.
Съществуват
две много
важни обстоятелства,
които в
подобни
ситуации ни
помагат. На първо
място трябва
да обърнем
внимание на факта,
че преди да
се пристъпи
към
определяне
кода на
дадено число,
то се
представя в двоична
бройна
система. От
математическа
гледна точка
този факт е
без значение,
но в смисъла на
тук
поставената
задача, той
има решаващо
значение,
защото той е
свързан с друг
един факт,
според който
двоичните
цифри могат
да се
интерпретират
като логически
константи. Тези
обстоятелства
са в основата
на техническата
реализация
на операция
събиране, което
е подробно
изложено в книга [2].
В
търсене на
алгоритъма
на прехода от
число към
код, ще
отбележим, че
като начало
следва да
бъдат
осигурени
изходните
предпоставки,
а именно –
числото да
бъде
изобразено в
двоична
бройна
система и да
бъде поместено
в разрядната
мрежа. С
други думи
процесът на
получаване
на
допълнителния
код ще
изхожда от
съдържанието
на
разрядната мрежа,
което според
споменатите
предпоставки
представлява
правия код
на числото
(вижте
определения
(1.6.1.1) и (1.6.1.2)).
По-нататък,
по силата на
(1.6.2.10), трябва да
се анализира
знакът на
числото, т.е.
съдържанието
на (n-1)-първия
бит на
разрядната
мрежа (вижте
фигура 1.1.6.1.3). Ако
числото е
положително,
съдържанието
на
разрядната
мрежа остава
непроменено,
но вече се
нарича
допълнителен
код, т.е.
Ако
обаче
числото е
отрицателно,
допълнителният
код
представлява
числото
Тъй като
модулът на
кода е равен
на модула на
разрядната
мрежа N (1.6.2.6),
записаната
разлика е
числото
Последният
вид на
разлика ще
интерпретираме
въз основа на
особения вид
на
умаляемото,
което може да
бъде изразено
така
N =
(N-d) + d , (1.6.4.1)
където d
е дискретът
на
разрядната
мрежа (1.1.6.1.4).
След
като
кодовата
комбинация
се интерпретира
като число без
знак с дясно
фиксирана
запетая,
тогава можем
да приемем,
че d=1 или N=(N-1)+1. Ще
означим
специално
полагането
Замествайки
получения
израз, за
допълнителния
код ще
получим
следния
израз:
Полученият
израз може да
се
интерпретира
като
съставен от
две части –
част първа:
и част втора: +1.
Както
се вижда,
операция
изваждане
продължава
да присъства в израза. Ако
успеем обаче
да намерим
стойността
първата част,
достатъчно е
към нея да
прибавим
единица и ще
получим
допълнителния
код.
Ясно
е, че
проблемът ни
е в първата
част на израза
(1.6.4.3).
Умаляемото
на тази
разлика е
числото
което
според
предварителните
констатации
може да бъде
записано
така:
Както
може да се
види,
изпълнението
на операция
изваждане по
определение
води до резултат,
който
представлява
n-разрядно
число,
съдържащо
във всеки
отделен
разряд една и
съща цифра.
Тази цифра r,
определена в пункт 1.1.1, е максималната
за
съответната
бройна
система (r=q-1). В случай на
двоична
бройна
система r=1. При
това
положение
разликата
представлява
n-разрядно
число
съставено
само от
единици.
Сега
вече остава
да
разгледаме
двоичната разлика Q-|X|, която след
горните
съждения ще
запишем
както следва:
Модулът
на числото,
като
умалител в
горната
разлика, е
изразен със
старша
незначеща цифра
нула, тъй
като
позволената
дължина на цифровата
част на
разрядната
мрежа е (n-1) разряда (вижте
фигура 1.1.6.1.3).
В
така
представения
запис се
вижда, че
търсената
разлика може
да се получи
поразрядно,
т.е. всяка
нейна цифра
се получава
като разлика
от
максимално
възможната
за бройната
система и
текущата на
числото:
Тъй като
при това
положение възникването
на заеми е
невъзможно,
то
резултатът
във всеки
един разряд
ще се получи
независимо
от
резултатите
в останалите
разряди, т.е. поразрядно.
И
така, все още
не сме се
освободили
от операция
изваждане. За
сега успяхме
само да я
сведем от
многоразрядна
към едноразрядна.
Резултатът
от
едноразрядната
операция
изваждане
обаче може да
бъде изразен
както следва:
който лесно
може да бъде
доказан, ако
променливата
в дясната
част на
равенството
се интерпретира
като логическа!
По силата на
този извод се
стига до
заключението,
че
поразрядното
двоично
изваждане
може да бъде
заменено с поразрядна
логическа
операция
инверсия,
т.е.
Този
резултат е
забележителен
с това, че той
се получава не
в резултат на
фактическо
изпълнение на
операция
изваждане, а
в резултат на
оползотворените
предпоставки,
на които
по-горе беше
обърнато
внимание.
Така
за
отрицателни
числа може да
се запишем,
че
което
изразява
аналитично
процеса на
преход от
прав код на
числото
в
допълнителен.
Въз
основа на
същия анализ
може да се
покаже, че
преходът от
допълнителен
код в прав код
може да се
извърши в
същия
порядък,
вместо в
обратен, т.е.
Зависимостта
(1.6.4.8) изразява
същността на
процеса на
решение на
правата
задача за
сравнимост,
изразен на
фигура 1.6.2.4. С
други думи
зависимостта
е циклическа:
Последното
означава, че
вместо два
алгоритъма
за преход от
един код в
друг, може да
се използва само
един – този
за преход от
прав в
допълнителен
код.
Всички
заключения,
направени в
този раздел,
са числено
илюстрирани
с множество
примери,
които
читателят
може да на
мери в книга
[2].
Следващият
раздел е:
1.6.5
Обратен код
( One's complement
representation )