Двоичните логически операции са фундаментални в света на изчислителната техника и цифровата електроника. Те не само позволяват изчисления и обработка на данни, но и са основа за работата на съвременните компютри. Всяка операция е предназначена да обработва битове, стойности 0 и 1, които представляват включено и изключено състояние на електрическите вериги на устройствата, които използваме в ежедневието си.
Концепцията за двоична логика се използва от дълго време, но нейното значение нарасна експоненциално с развитието на цифровите технологии. В тази статия ще разгледаме в дълбочина различните логически операции, които могат да бъдат извършени върху набор от битове, как работят и къде най-често се прилагат. Независимо дали сте студент, който за първи път се сблъсква с тази тема или вече имате опит в областта, ще намерите полезна и подробна информация.
Ролята на бинарната логика
Двоичната логика работи с две състояния: 0 и 1, което съответства на false и true в класическата логика. Това позволява да се обработват големи количества данни в компютърни системи и цифрови устройства. Операциите, извършвани върху тези битове, се извикват булеви операции, които формират сърцето на булевата алгебра. Тези две състояния позволяват дефиниране на условия, които могат да бъдат проверени и обработени от схеми и софтуер по изключително бърз и прецизен начин.
Основни логически операции
Логическите операции върху двоичните числа се извършват бит по бит, т.е. всеки бит се оценява индивидуално спрямо неговия аналог в другия вход. След това резултатът от всеки бит се комбинира, за да се формира крайният резултат от операцията. Най-често срещаните основни операции са описани по-долу.
И операция (логическо И)
Операцията AND е отговорна за приемането на два бита като вход и генерира изход, който ще бъде 1 само ако и двата входни бита са 1. В противен случай изходът ще бъде 0. С други думи, и двата бита трябва да са верни, за да се получи верен резултат.
Пример за операция И:
1010 И 1100 = 1000
В този пример само битовете, които са верни и на двата входа, остават включени (т.е. те са 1) в резултата.
ИЛИ операция (логическо ИЛИ)
Операцията OR, от друга страна, приема два бита като вход и ще върне a 1, ако поне един от входните битове е 1. Тоест, ако едно от двете (или и двете) е вярно, резултатът също ще бъде верен.
Пример за операция ИЛИ:
1010 ИЛИ 1100 = 1110
В този случай всеки бит, който е верен на един или двата входа, ще бъде верен и на изхода.
НЕ операция (логично НЕ)
Операцията NOT е най-простата, тъй като се нуждае само от един бит като вход. Неговата функция е да обърне стойността на входния бит. по този начин ако входът е 0, изходът ще бъде 1, и обратно.
Пример за операция НЕ:
НЕ 1010 = 0101
В този пример всички битове са обърнати в резултата.
Допълнителни логически операции
В допълнение към трите основни, има и други по-малко използвани логически операции, които също играят важна роля в определени системи и обстоятелства.
NAND операция (логическо НЕ И)
NAND е комбинация от И с инверсия НЕ. Той ще генерира изход от 1 всеки път поне един от входните битове е 0. Ще върне 0 само ако и двата входни бита са 1.
NOR (логическа NOT OR) операция
NOR е обратното на операцията OR. Варира по такъв начин, че резултатът му ще бъде само 1 ако и двата входни бита са 0. В противен случай ще върне 0.
Операция XOR (изключително ИЛИ).
XOR е логическа операция, която връща 1 само ако входните битове са различни един от друг. Ако и двете са равни (и двете 0 или и двете 1), резултатът ще бъде 0.
Операция XNOR (НЕ е изключително O)
XOR също има аналог: XNOR. Този оператор връща 1, ако входните битове са еднакви (и двата 0 или и двата 1) и ще върне 0, ако са различни.
Къде се използват двоични логически операции?
Двоичните логически операции са изключително често срещани в мрежови системи, цифрова електроника и програмиране. Въпреки че може да не сме наясно с това, тези операции стоят зад много от ежедневните дейности, които извършваме с електронни устройства.
Един от най-ярките примери, в които се използват тези операции, е в IPv4 адреси. На всяко устройство, свързано към мрежа, се присвояват IP адрес и подмрежова маска. Използвайки операцията И, устройствата сравняват своя адрес с този на други устройства, за да разберат дали принадлежат към същата мрежа или дали данните, които се предават, трябва да бъдат изпратени към различна мрежа.
Пример за използване в IPv4:
Когато дадено устройство сравнява адреса си с подмрежовата маска:
IP адрес: 11000000.10101000.00000001.00000001 Подмрежа: 11111111.11111111.11111111.00000000
Прилагайки операцията И малко по малко, получаваме следното:
11000000.10101000.00000001.00000000
Резултатът е мрежовият адрес, към който принадлежи устройството.
Значението на Джордж Бул
Двоичната логика и наборът от операции, които описахме, не биха съществували, както ги познаваме, без работата на математика Джордж Бул. Този гений от 19-ти век създава това, което познаваме като булева алгебра, която установява математическите основи за булеви операции и, в крайна сметка, за двоичната логика, върху която са изградени днешните компютри и цифрови системи.
Бул направи своя принос във време, когато математиката и логиката следваха различни пътища. Неговата визия за обединяване на двете дисциплини промени основите на това, което днес разбираме като цифрова логика.
Побитови операции
В допълнение към споменатите операции, операциите на битово ниво имат много практически приложения при обработката на данни. Тези операции позволяват Манипулирайте и модифицирайте отделни битове на двоично число, които са от съществено значение за филтриране на данни, извършване на битово маскиране и манипулиране на числа в по-надеждни системи.
Операцията И на битово ниво
Нека първо да разгледаме оператора И на битово ниво. Работата му е доста проста: взимате всяка съответстваща двойка битове между две числа и прилагате правилата на операцията И, за да определите дали битът в тази позиция ще бъде 0 (ако и двата входни бита не са 1) или ще бъде 1 (ако и двата входни бита са 1).
Пример за побитова операция И:
0101 И 0011 = 0001
Използване на маски за филтриране на битове с И
В цифровото програмиране операторът И обикновено се използва заедно с битови маски за да изберете или филтрирате определени битове. Например, ако искате да проверите дали определен бит в поредица от битове е включен или изключен, можете да извършите операция И с маска, която избира само този бит.
Пример за битова маска:
0011 И 0010 = 0010
В този случай проверяваме дали вторият бит е включен. Тъй като резултатът е различен от нула, знаем, че битът е включен.
Други операции като оператора ИЛИ също имат обширни приложения, когато става въпрос за работа на битово ниво.
Побитова операция XOR
Операторът XOR притежава една от най-полезните си функции в програмирането на ниско ниво, като позволява разменете стойности между две променливи, без да използвате временна променлива. Този трик, известен като обмен XOR, е много ефективен и се възползва от таблицата на истината на оператора XOR.
Пример за размяна на XOR:
a = a XOR bb = a XOR ba = a XOR b
След изпълнението на тези три операции, стойността на a
y b
Те ще бъдат обменени без необходимост от използване на трета променлива.
Побитови смени и завъртания
И накрая, операциите на изместване y въртене Те позволяват битовете на числото да се преместват надясно или наляво. Тези операции са полезни в много области, като криптография и манипулиране на данни във вградени системи.
Логическото ляво изместване е еквивалентно на умножаване на число по 2, докато логическото надясно е еквивалентно на разделяне на числото на 2.
При ротация чрез пренасяне битовете, излизащи от едната страна, се връщат от другата, което е полезно за някои криптографски алгоритми и на специфичен хардуер.
В крайна сметка разбирането на тези операции е от ключово значение за ефективната работа в области, които изискват директно манипулиране на битове, като програмиране на ниско ниво, разработване на вградени системи или проектиране на цифров хардуер.