Základné logické operácie (a alebo alebo xor nie). Exkluzívna logická brána alebo logická operácia Xor

Všetko digitálne mikroobvody pozostávajú z rovnakých logických prvkov - „stavebných kameňov“ akéhokoľvek digitálneho uzla. Teraz o nich budeme hovoriť.

Logický prvok Je to obvod, ktorý má niekoľko vstupov a jeden výstup. Každý stav signálov na vstupoch zodpovedá určitému signálu na výstupe.

Aké sú teda prvky?

Prvok „AND“ (AND)

V opačnom prípade sa nazýva "konjunktor".

Aby ste pochopili, ako to funguje, musíte nakresliť tabuľku, ktorá uvádza výstupné stavy pre akúkoľvek kombináciu vstupných signálov. Takáto tabuľka sa nazýva „ tabuľka pravdy“. Tabuľky pravdy sa v digitálnej technológii široko používajú na opis činnosti logických obvodov.

Takto vyzerá prvok AND a jeho tabuľka pravdy:

Pretože budete musieť komunikovať s ruskými aj buržoáznymi technológiami. dokumentáciu, poskytnem konvenčné grafické označenia (UGO) prvkov podľa našich aj iných štandardov.

Pozeráme sa na tabuľku pravdy a objasňujeme princíp v mozgu. Nie je ťažké to pochopiť: jednotka na výstupe prvku „AND“ sa objaví iba vtedy, ak sú jednotky dodávané na oba vstupy. To vysvetľuje názov prvku: jednotky musia byť na AND na jednom a AND na druhom vstupe.

Ak sa pozriete trochu inak, môžeme povedať toto: výstup prvku „AND“ bude nulový v prípade, že aspoň jeden z jeho vstupov je nulový. Pamätáme si. Pohni sa.

ALEBO prvok (ALEBO)

Inými slovami, jeho meno je „disjunktor“.

Obdivujem:

Názov opäť hovorí sám za seba.

Jednotka sa objaví na výstupe, keď je jednotka privádzaná k jednému ALEBO k druhému ALEBO k obidvom vstupom naraz. Tento prvok možno tiež nazvať prvkom „A“ pre negatívnu logiku: nula na jeho výstupe nastane iba vtedy, ak sú na jeden a druhý vstup privedené nuly.

Prvok „NIE“

Častejšie sa to nazýva „invertor“.

Potrebujete povedať niečo o jeho práci?

Prvok „NAND“

Brána NAND funguje úplne rovnako ako „A“, iba výstupný signál je úplne opačný. Tam, kde by prvok „AND“ mal mať na výstupe „0“, prvok „AND-NOT“ by mal mať jeden. A naopak. To je ľahko pochopiteľné z ekvivalentného obvodu prvku:

Prvok „OR-NOT“ (NOR)

Ten istý príbeh - brána OR s invertorom na výstupe.

Ďalší súdruh je o niečo prefíkanejší:
Exkluzívne ALEBO (XOR)

On je taký:

Operácia, ktorú vykonáva, sa často nazýva pridanie modulo 2. V skutočnosti sú digitálne prídavky postavené na týchto prvkoch.

Pozeráme sa na tabuľku pravdy. Kedy sú jednotky vonku? Správne: keď sú na vstupoch rôzne signály. Na jednom - 1, na druhom - 0. Je teda taký prefíkaný.

Ekvivalentný obvod je niečo také:

Nie je potrebné si to pamätať.

V skutočnosti sú to hlavné logické prvky. Na ich základe sú postavené absolútne všetky digitálne mikroobvody. Dokonca aj vaše milované Pentium 4.

A nakoniec niekoľko mikroobvodov obsahujúcich digitálne prvky. V blízkosti koncoviek prvkov sú uvedené čísla zodpovedajúcich ramien mikroobvodu. Všetky integrované obvody tu uvedené majú 14 nožičiek. Napájanie je dodávané do nôh 7 (-) a 14 (+). Napájacie napätie - pozri tabuľku v predchádzajúcom odseku.


Operátor Syntax Popis
A A A B. Spojenie: Ak A a B sú pravdivé, potom True. V opačnom prípade - nepravda
ALEBO A ALEBO B Disjunkcia: Ak je niektorý z operandov True, potom - True. V opačnom prípade - nepravda
NIE NIE A. Negácia: Ak je A nepravdivé, potom je to pravda. V opačnom prípade - nepravda
XOR A XOR B Výnimka: Ak A je pravda alebo B je pravda, potom je to pravda. V opačnom prípade - nepravda
EQV A EQV B Rovnocennosť: Ak má A rovnaký význam ako B, potom je to pravda. V opačnom prípade - nepravda
IMP A IMP B Dôsledok: Ak A je pravda a B je nepravda, potom je to nepravda. Inak - pravda

Akýkoľvek platný výraz s booleovským výsledkom môže byť použitý ako operand pre logický operátor, ako aj číslo, ktoré je možné previesť na booleovskú hodnotu.

Výsledkom logickej operácie je booleovská hodnota (alebo Null, ak je aspoň jeden z operandov Null).

Logický operátor AND

Syntax:
Operand_1 A Operand_2


Operátor AND vykonáva logická spojka.

Táto operácia sa vyhodnotí ako True iba vtedy, ak sú oba operandy True; v opačnom prípade False.


Pravdivá tabuľka


Operátor AND môže byť použitý pre viac operandov:


(5 3) A (5 = 6) výsledok je nepravdivý


Bez ohľadu na počet operandov je výsledok logickej operácie AND pravdivý, iba ak sú všetky operandy výrazu pravdivé. V opačnom prípade je výsledok nepravdivý. Operandy sú uzavreté v zátvorkách. VBA najskôr vyhodnotí hodnotu každého operandu v zátvorkách a potom celý výraz.

Logický operátor ALEBO

Syntax:
Operand_1 ALEBO Operand_2


Operátor OR vykonáva logická disjunkcia.

Výsledok tejto operácie je True, ak je aspoň jeden z operandov True, inak False.


Pravdivá tabuľka


Operátor OR môže byť použitý pre viac operandov:


(5 3) ALEBO (5 = 6) výsledok je pravdivý


Bez ohľadu na počet operandov bude výsledok logickej operácie OR vždy True, ak aspoň jeden z operandov výrazu bude hodnotený ako True. V opačnom prípade je výsledok nepravdivý.

Operátory AND a OR je možné kombinovať:


((5 3)) ALEBO (5 = 6) výsledok bude pravdivý

Logický operátor NOT

Syntax:
NIE Operand


Operátor NOT to robí logická negácia.

Operátor NOT používa iba jeden operand.


Pravdivá tabuľka


Operátory ALEBO NIE JE možné kombinovať:


((5 3)) ALEBO NIE (5 = 6) výsledok bude pravdivý

Logický operátor XOR

Syntax:
Operand_1 XOR Operand_2


Operátor XOR vykonáva logické vylúčenie.

Výsledok tejto operácie je True, ak majú operandy rôzne hodnoty; v opačnom prípade False.


Pravdivá tabuľka


((5 3)) ALEBO NIE (5 = 6) XOR (5 = 5) výsledok bude nepravdivý

Logický operátor EQV

Syntax:
Operand_1 EQV Operand_2


Prevádzkovateľom je operátor EQV logická ekvivalencia.

Výsledok tejto operácie je True, ak sú operandy rovnaké hodnoty inak - nepravda.


Pravdivá tabuľka


((5 3)) ALEBO NIE (5 = 6) EQV (5 = 5) výsledok bude pravdivý

Booleovský operátor IMP

Syntax:
Operand_1 IMP Operand_2


Operátor IMP vykonáva booleovskú operáciu dôsledky.


Pravdivá tabuľka


((5 3)) ALEBO NIE (5 = 6) IMP (5 = 5) výsledok bude pravdivý


Logický operátor IMP je zo všetkých najmenej intuitívny logické operátory... Našťastie je len zriedka potrebné ho použiť.

C ++. Logické operácie. Bitové logické operácie. Operácie na smeny. Prevádzka XOR

1. Na ktoré typy môžete použiť logické operácie, bitové logické operácie a posunové operácie?

Logické operácie, bitové logické operácie a posunové operácie je možné použiť iba na operandoch celočíselných typov.

2. Aké logické operácie sa používajú v C / C ++?

V programovacom jazyku C / C ++ sa používajú nasledujúce logické operácie:

  • && - logické „A“;
  • || - logické „ALEBO“;
  • ! - logické „NIE“.

Booleovské operácie majú za následok nepravdivé alebo pravdivé. V C ++ je akceptované, že false je považovaný za 0 a true je považovaný za 1.

Z toho môžeme usúdiť, že nepravdivé< true . Например:

// logické operácie bool res; res = nepravda< true ; // res = true
3. Pravdivá tabuľka logických operácií

Pravdivá tabuľka logických operácií && (logické „A“), || (logické „ALEBO“), ! (logické „NIE“) je nasledujúci:

C / C ++ predpokladá, že false je 0 a true nie je 0 (akákoľvek nenulová celočíselná hodnota).

4. Príklady použitia logických operácií v C ++

Príklad 1. Booleovská operácia kombinovaná s booleovským výrazom

// logické operácie bool res; int a, b; // operácia && (AND) a = 8; b = 5; res = a && b; // res = True a = 0; res = a && b; // res = False // operácia || (OR) a = 0; b = 0; res = a || b; // res = False b = 7; res = a || b; // res = Pravda // operácia! (logické „NIE“) a = 0; res =! a; // res = True a = 15; res =! a; // res = nepravda

Príklad 2. Booleovská operácia v podmienených výrazoch. Existuje útržok kódu, v ktorom logická operácia používa sa v príkazu podmienenej vetvy if.

// logické operácie v podmienených výrazoch int a, b; bool res; a = 0; b = 3; res = false; ak (a && b) res = true; // res = false a = 0; b = 7; ak (a || b) res = true; // res = true
5. Aké bitové logické operácie sa používajú v C / C ++?

Jazyk C / C ++ podporuje nasledujúce bitové schémy logické operácie:

  • & - bitovo logické AND (AND);
  • ^ - bitový adičný modul 2 (XOR - exkluzívne ALEBO);
  • | - bitovo logické ALEBO (ALEBO);
  • ~ - bitová inverzia (NIE).

Operácie &, ^, | sú binárne. To znamená, že vyžadujú dva operandy. Bity akéhokoľvek operandu sa navzájom porovnávajú podľa nasledujúceho pravidlo: bit na pozícii 0 prvého operandu sa porovná s bitom na pozícii 0 druhého operandu. Bit na pozícii 1 prvého operandu sa potom porovná s bitom na pozícii 1 druhého operandu. Takto sa porovnávajú všetky bity celočíselných operandov.

6. Pravdivá tabuľka bitových logických operácií

Každý bit výsledku je určený na základe dvoch operandov, ktoré sú bitmi, ako je uvedené v tabuľke.

Inverzia vyžaduje jeden operand napravo od znaku ~. Výsledok sa získa bitovou inverziou všetkých bitov operandu.

7. Príklad práce s logickými bitovými operáciami

Nech sú dané dve čísla 17 a 45 typu bez znamienka, krátke int. Každé z čísel zaberá v pamäti 1 bajt alebo 8 bitov. Nasleduje príklad, ako sa výpočty vykonávajú pre každú bitovú operáciu

Ako vidíte na príklade, špecifikovaná operácia sa vykonáva pre každý bit.

8. Aké radiace operácie sa používajú v C / C ++?

Jazyk C / C ++ obsahuje dve bitové operácie smena:

  • << - ľavý posun hodnoty operandu o zadaný počet bitov. Operand je umiestnený vľavo od operačného znaku. Počet bitov, ktoré sa majú posunúť, je uvedený napravo od prevádzkového znaku;
  • >> - posun doprava o hodnotu operandu o zadaný počet bitov. Operand je umiestnený naľavo od operačného znaku (<<). Počet bitov, ktoré sa majú posunúť, je umiestnený napravo od prevádzkového znaku.

Vyťažené bity sa stratia a „prídu“ nulové bity. Posunutie operandov doľava o 1, 2, 3 alebo viac číslic je najrýchlejší spôsob, ako ich vynásobiť 2, 4, 8, ... Posunutie operandov doprava o 1, 2, 3 alebo viac číslic je najrýchlejší spôsob delíme 2, 4, 8, ...

Ak program potrebuje operáciu vynásobenia celočíselných operandov 2, 4, 8 atď. stalo sa to čo najrýchlejšie, potom je vhodné použiť posun doľava.

To platí aj pre prípady, keď potrebujete rýchlo rozdeliť celočíselný operand na 2, 4, 8 atď. V týchto prípadoch sa odporúča použiť posun doprava.

9. Príklady použitia posunových operácií v programe
// Operácie radenia int a; int b; int c; a = 15; b = -5; // posun vľavo - násobiť c = a<< 1; // c = a * 2^1 = 30 c = b << 2; // c = b * 2^2 = -20 // posun doprava - delenie c = a >> 3; // c = a / 2 ^ 3 = 1 c = b >> 1; // c = b / 2 ^ 1 = -3
10. Aký je rozdiel medzi logickými operáciami a bitovými logickými operáciami?

V logických operáciách sa porovnáva celá hodnota dvoch operandov. Každý z operandov môže byť pravdivý alebo nepravdivý. Jazyk C / C ++ umožňuje porovnanie operandov, ktoré sú celé čísla. V tomto prípade celočíselná hodnota 0 zodpovedá hodnote false a nenulová (akákoľvek iná) hodnota zodpovedá hodnote true.

Správanie

Prvky Exkluzívne ALEBO, Exkluzívne ALEBO NIE, Nepárne a Parita vypočítajú zodpovedajúcu funkciu hodnôt na vstupoch a vrátia výsledok na výstup.

V predvolenom nastavení sú nepripojené vstupy ignorované - to znamená, že ak k nim vstupy skutočne nie sú nič prepojené - dokonca ani káble. Môžete teda pridať 5-vstupný prvok, ale pripojiť iba dva vstupy a bude fungovať ako 2-vstupný prvok; to vám ušetrí starosti s nastavením počtu vstupov pri každom vytváraní položky. (Ak nie sú pripojené všetky vstupy, potom je výstupom chybová hodnota X.) Niektorí používatelia však uprednostňujú, aby Logisim trval na tom, aby boli všetky vstupy pripojené, pretože zodpovedajú skutočným položkám. Toto správanie môžete povoliť tak, že prejdete do ponuky Návrh> Možnosti ..., prejdete na kartu Modelovanie a vyberiete možnosť Chyba pre nedefinované vstupy pre položku Element pri neistote.

Dvojsmerná tabuľka pravdy pre prvky je nasledovná.

XrExkluzívne ALEBO Exkluzívne ALEBO NIEZvláštnosťParita
0 0 0 1 0 1
0 1 1 0 1 0
1 0 1 0 1 0
1 1 0 1 0 1

Ako vidíte, brány Odd a XOR sa správajú rovnako v prípade dvoch vstupov; Rovnako sa prvky Parita a Exkluzívne-NEBO-správajú rovnako. Ak však existuje viac ako dva vstupy s určitou hodnotou, potom prvok Exclusive OR dá na výstupe 1, keď je jeden striktne na jednom vstupe, zatiaľ čo nepárny prvok dá na výstupe 1, ak existuje jeden na nepárnom čísle. vstupov. Exkluzívny prvok NEBO NIE poskytne 1 na výstupe, ak sú vstupy s 1 striktne nie jeden, zatiaľ čo paritný prvok dá 1, ak existuje párny počet vstupov s jedným. Prvky Exclusive-OR a Exclusive-OR-NOT majú atribút nazývaný Chovanie viacerých vstupov, ktorý im umožňuje konfiguráciu tak, aby používala správanie prvkov Nepárny a Parita.

Ak majú niektoré vstupy chybovú hodnotu (napríklad ak na ten istý vodič prichádzajú protichodné hodnoty) alebo plávajúcu hodnotu, potom bude výstupom chybová hodnota.

Viacbitové verzie každého prvku budú vykonávať svoje bitové transformácie na vstupoch bit po bite.

Poznámka: Mnoho odborníkov tvrdí, že správanie sa prvku v tvare Exclusive-OR by sa malo zhodovať so správaním podivného prvku, ale v tejto otázke neexistuje zhoda. Predvolené správanie spoločnosti Logisim pre položku Exkluzívna ALEBO je založené na štandarde IEEE 91. To je tiež v súlade s intuitívnym chápaním pojmu Exkluzívne ALEBOČašník, ktorý sa pýta, či chcete prílohu zo zemiakovej kaše, mrkvy, zeleného hrášku alebo nastrúhanej kapusty, prijme iba jednu možnosť, nie tri, bez ohľadu na to, čo vám môžu niektorí odborníci povedať. (Musím však priznať, že som toto tvrdenie netestoval vážne.) Prvky XOR a XOR alebo NOT môžete nastaviť tak, aby používali jednu z možností, a to zmenou atribútu Správanie viacnásobného vstupu.

Kontakty (predpokladá sa, že súčiastka bude smerovať na východ)

Západný okraj (vstupy, bitová šírka sa zhoduje s atribútom Data Bits)

Vstupy komponentov. Bude ich toľko, koľko je uvedené v atribúte Počet vstupov.

Všimnite si toho, že ak používate kučeravé prvky, západný okraj prvkov XOR a XOR a NOT bude zakrivený. Vstupné kolíky sú však málo umiestnené. Logisim ukazuje krátke čiary, aby to ukázal; ak prekrývate segment, program bude bez varovania predpokladať, že ste ho nechceli prekrývať. Pri použití „Zobrazenia pre tlač“ tieto riadky nebudú nakreslené, ak nie sú pripojené k vodičom.

Východný okraj (výstup, bitová šírka sa zhoduje s atribútom Data Bits)

Výstup prvku, ktorého hodnota sa vypočíta na základe aktuálnych hodnôt na vstupoch, ako je popísané vyššie.

Atribúty

Keď je komponent vybraný alebo už bol pridaný, klávesy od 0 do 9 zmenia jeho atribút Počet vstupov, kombinácie od Alt-0 do Alt-9 zmenia jeho atribút Dátové bity a klávesy so šípkami zmenia jeho atribút Smer.

Smer Smer komponentu (jeho výstup vzhľadom na jeho vstupy). Dátové bity Šírka vstupov a výstupov komponentu. Veľkosť prvku Určuje, či sa má nakresliť široká alebo úzka verzia komponentu. Toto nemá vplyv na počet vstupov, ktorý je určený atribútom Počet vstupov; ak však počet vstupov prekročí 3 (pre úzky komponent) alebo 5 (pre široký komponent), prvok bude vykreslený pomocou „krídel“, aby sa zmestil požadovaný počet vstupov. Počet vstupov Určuje, koľko pinov na západnom okraji bude komponent mať. Správanie viacerých vstupov (iba pre exkluzívne ALEBO a exkluzívne ALEBO NIE) Ak existujú tri alebo viac vstupov, hodnota na výstupe brán Exkluzívny ALEBO a Exkluzívny ALEBO NEBUDE vychádzať buď zo skutočnosti, že 1 je výlučne na jednom vstupe (štandardne) alebo na nepárnom počte vstupov.

Bit je najmenšou mernou jednotkou množstva informácií, pretože ukladá jednu z dvoch hodnôt- 0 (nepravda) alebo 1 (pravda). False a True preložené do ruštiny sú nepravdivé a pravdivé. To znamená, že jedna bitová bunka môže byť súčasne iba v jednom stave z možných dvoch. Pripomeniem, že dva možné stavy bitovej bunky sú rovnaké - 1 a 0.
Existujú určité operácie na manipuláciu s bitmi. Tieto operácie sa nazývajú logické alebo booleovské operácie, pomenované podľa jedného z matematikov Georga Booleho (1815-1864), ktorý prispel k rozvoju tejto oblasti vedy.
Všetky tieto operácie je možné použiť na ľubovoľný bit bez ohľadu na to, či je 0 (nula) alebo 1 (jedna). Nasledujú základné logické operácie a príklady ich použitia.

Logická operácia AND

A notácia: &

Logická operácia AND sa vykonáva s dvoma bitmi, nazvime ich a a b. Výsledok vykonania logickej operácie AND sa bude rovnať 1, ak a a b sa budú rovnať 1, a vo všetkých ostatných (ostatných) prípadoch bude výsledok rovný 0. Pozrime sa na tabuľku pravdy logickej operácie a .

a (bit 1) b (bit 2) a (bit 1) ab (bit 2)
0 0 0
0 1 0
1 0 0
1 1 1

Logické ALEBO (ALEBO)

ALEBO zápis: |

Logická operácia ALEBO sa vykonáva s dvoma bitmi (a a b). Výsledok vykonania logickej operácie OR sa bude rovnať 0, ak a a b sa rovnajú 0 (nula), a vo všetkých ostatných (ostatných) prípadoch sa výsledok rovná 1 (jedna). Pozrime sa na tabuľku pravdy logickej operácie ALEBO.

a (bit 1) b (bit 2) a (bit 1) | b (bit 2)
0 0 0
0 1 1
1 0 1
1 1 1

Logická operácia exkluzívna ALEBO (XOR).

Zápis XOR: ^
Exkluzívna ALEBO logická operácia sa vykonáva s dvoma bitmi (a a b). Výsledok vykonania logickej operácie XOR bude 1 (jeden), ak je jeden z bitov a alebo b 1 (jeden), vo všetkých ostatných prípadoch je výsledok 0 (nula). Pozeráme sa na tabuľku pravdy exkluzívnej logickej operácie ALEBO.

a (bit 1) b (bit 2) a (bit 1) ^ b (bit 2)
0 0 0
0 1 1
1 0 1
1 1 0

Logická operácia NIE (nie)

NOT notation: ~
Logická operácia NIE JE vykonaná s jedným bitom. Výsledok tejto logickej operácie priamo závisí od stavu bitu. Ak bol bit v nulovom stave, potom výsledok vykonania NOT bude rovný jednej a naopak. Pozeráme sa na tabuľku pravdy logickej operácie NOT.

a (bit 1) ~ a (malá negácia)
0 1
1 0

Zapamätajte si tieto 4 logické operácie. Pomocou týchto logických operácií môžeme dosiahnuť akýkoľvek možný výsledok. Prečítajte si viac o použití logických operácií v C ++.