1.1.4 Представяне на логическите данни
Presentation of logical data
Логическите данни представляват
логическите константи "лъжа"
и "истина" и
тъй като са само две, те се кодират с двоичните цифри 0º”лъжа”, 1º”истина”. В случаите, когато
полето, в което се представят данните, е многоразрядно, каквото е например
разрядното поле на цифровите процесори, логическите константи се представят
чрез запълване на полето с една и съща двоична цифра: 00...0=”лъжа” или
11...1=”истина”. Логическите данни се декларират в езиците за програмиране от
високо ниво с ключовата дума за тип bolean, която определя и формàта (дължината)
на полето за представянето им на един байт (8 [b]).
Изложеното тук по-долу и в последствие предполага, че читателят е запознат с алгебрата на логиката, логическите елементи, синтеза на логически функции и теорията на крайните автомати.
Изчислителните устройства оперират с логическите данни като изпълняват известните логически операции:
- логическо отрицание НЕ
, (NOT) , notX
, ;
- логическо събиране (дизюнкция)
ИЛИ , (OR) , ;
- логическо умножение (конюнкция)
И , (AND) , ;
- логическа нееквивалентност
(NEQ) , , Mod2(X,Y) ;
- логическа еквивалентност (EQ) , .
Операция EQ обикновено се реализира без фиксиране на резултата. В повечето реални машинни реализации операцията се използва за формиране на признаците на резултата, т.е. като тест. С признаците на резултата, техния смисъл, формиране и актуалност читателят ще бъде запознат в глава 3 на тази книга.
Следващите операции:
- щрих на Шефер (NOR) , ;
- стрелка на Пирс (NAND) ,
и други елементарни логически
операции от функционално пълното множество логически функции от два аргумента,
в чист вид не се реализират. Читателят лесно може да се досети, че те могат да
се изпълнят в комбинация от реализираните.
Непосредствено реализираните в цифровите
процесори логически операции обикновено са малко на брой. Те нямат решаваща роля
и могат да се приемат за помощни. Например операция логическо умножение
се използва най-често за маскиране (прикриване, скриване, не
пропускане) на отделни части от разрядната мрежа. Маскирането, като похват
за отделяне на части от данновите единици (порции), е често възникваща
алгоритмична потребност. Изпълнението на тези операции в
аритметично-логическото устройство е поразрядно (самостоятелно за
всеки бит на разрядната мрежа по отделно). Поразрядно означава, че резултатът
във всеки отделен разряд зависи единствено от стойностите в съответните разряди
на операндите. Например:
В програмирането на асемблерен език много често логическата операция NEQ от еднакви операнди (XÅX) се
използва за нулиране на съдържанието на даден регистър, което илюстрира
следващия пример
Резултатите се получават в многофункционалната логическа схема на
основния суматор, който се настройва според необходимата операция. Синтезът и
функционирането на този вид суматор и неговата принципна логическа схема са
изяснени в книга [2].
В резултат на логическите операции се
получават нови логически стойности или стойности, които потребителят желае да
интерпретира по свой собствен начин. Същото се отнася и до формираните признаци
на резултата, за които по-късно в тази книга отново ще се говори. За тези
ефекти на логическите операции читателят може да прочете още в книга [4].
Следващият раздел е:
1.1.5 Представяне на
символните данни (Presentation of character data)