Двоични логически операции: Пълно и практическо ръководство

  • Логическите операции AND, OR, NOT и XOR са фундаменталната основа на цифровата логика.
  • Всички операции се извършват бит по бит, което позволява данните да се обработват ефективно.
  • Булевата логика, създадена от Джордж Бул, е основата, върху която работят днешните цифрови системи.

двоични логически операции

Двоичните логически операции са фундаментални в света на изчислителната техника и цифровата електроника. Те не само позволяват изчисления и обработка на данни, но и са основа за работата на съвременните компютри. Всяка операция е предназначена да обработва битове, стойности 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.

При ротация чрез пренасяне битовете, излизащи от едната страна, се връщат от другата, което е полезно за някои криптографски алгоритми и на специфичен хардуер.

В крайна сметка разбирането на тези операции е от ключово значение за ефективната работа в области, които изискват директно манипулиране на битове, като програмиране на ниско ниво, разработване на вградени системи или проектиране на цифров хардуер.