Logický prvok exkluzívny resp. Logické operátory VBA Booleovská prevádzka exkluzívna alebo

Aby demonštrovali obmedzené možnosti jednovrstvových perceptrónov pri riešení problémov, často sa uchýlia k zváženiu problému tzv. XOR - exkluzívne OR.

Podstata úlohy je nasledovná. Dana logická funkcia XOR je exkluzívny ALEBO. Je to funkcia dvoch argumentov, z ktorých každý môže byť nula alebo jeden. Naberá hodnotu, ak je jeden z argumentov jeden, v opačnom prípade nie oba. Problém je možné ilustrovať na jednovrstvovom systéme s jedným neurónom s dvoma vstupmi, ktorý je znázornený na obrázku nižšie.

Označme jeden vstup skrz a druhý skrz, potom všetky ich možné kombinácie budú pozostávať zo štyroch bodov v rovine. Nasledujúca tabuľka ukazuje požadované prepojenie medzi vstupmi a výstupmi, kde sú kombinácie vstupov, ktoré by mali poskytovať nulový výstup, označené a a jeden výstup pomocou a.

Body Význam Význam Požadovaný výkon
0 0 0
1 0 1
0 1 1
1 1 0

Jeden neurón s dvoma vstupmi môže tvoriť rozhodovaciu plochu vo forme ľubovoľnej priamky. Aby sieť implementovala funkciu XOR uvedenú v tabuľke vyššie, musíte umiestniť priamku tak, aby body boli na jednej strane priamky a body na druhej strane. Keď sme sa pokúsili nakresliť takú priamku na obrázku nižšie, sme presvedčení, že to nie je možné. To znamená, že akékoľvek hodnoty sú priradené k váham a prahovým hodnotám, jednovrstvová neurónová sieť nie je schopná reprodukovať vzťah vstup-výstup potrebný na reprezentáciu funkcie XOR.

Funkciu XOR však ľahko tvorí dvojvrstvová sieť a to mnohými spôsobmi. Uvažujme o jednej z týchto metód. Poďme modernizovať sieť na obrázku pridaním ďalšej skrytej vrstvy neurónov:

Poznač si to túto sieť daný tak, ako je, t.j. možno to považovať za to, že už bola vycvičená. Čísla nad šípkami znázorňujú synaptické hmotnosti. Ako aktivačnú funkciu používame funkciu jedného skoku s prahom, ktorá má nasledujúci graf:

Výsledok fungovania takejto neurónovej siete potom môže byť prezentovaný vo forme nasledujúcej tabuľky:

Body Význam Význam Požadovaný výkon
0 0 0 0 0 0
1 0 1 1 0 1
0 1 1 0 1 1
1 1 0 0 0 0

Každý z dvoch neurónov prvej vrstvy tvorí rozhodovaciu plochu vo forme ľubovoľnej priamky (rozdeľuje rovinu na dve polroviny) a neurón výstupnej vrstvy kombinuje tieto dve riešenia a tvorí rozhodovaciu plochu v forma pásu tvoreného rovnobežnými rovnými čiarami neurónov prvej vrstvy:

Neurónová sieť použitá v tomto článku na riešenie problému XOR je primitívna a nevyužíva naplno výhody viacvrstvových sietí. Očividne viacvrstvové neurálne siete majú väčšiu reprezentačnú silu ako jednovrstvové, iba v prípade nelinearity. A v tejto sieti je použitá funkcia prahovej lineárnej aktivácie. Takúto sieť nie je možné trénovať napríklad pomocou algoritmu spätnej propagácie chýb.

funkcia, ktorú vykonávajú, je o niečo komplexnejšia ako v prípade prvku AND alebo prvku OR. Všetky vstupy brán XOR sú rovnaké, žiadny zo vstupov však nemôže blokovať iné vstupy nastavením výstupného signálu na jednu alebo nulovú úroveň. Tabuľka 4.1. Pravdivá tabuľka dvojvstupové exkluzívne OR prvky
Vchod 1 Vchod 2 Výkon
0 0 0
0 1 1
1 0 1
1 1 0


Ryža. 4.1.

Exkluzívna funkcia ALEBO znamená nasledovné: jednotka na výstupe sa zobrazí, ak je iba jeden vstup jednotkou. Ak sú na vstupoch dva alebo viac jednotiek alebo sú všetky vstupy nulové, výstup bude nulový. Pravdivá tabuľka prvok s dvoma vstupmi Exkluzívny ALEBO je uvedený v tabuľke. 4.1. Označenia prijaté v domácich a zahraničných schémach sú znázornené na obr. 4.1. Nápis na domácom označení exkluzívneho prvku OR „= 1“ znamená, že situácia je zvýraznená, ak je na vstupoch jedna a iba jedna jednotka.

V štandardnej sérii je len málo prvkov Exclusive OR. Domáce série ponúkajú mikroobvody LP5 (štyri dvojvstupové prvky s výstupom 2C), LL3 a LP12, ktoré sa od LP5 líšia výstupom OK. Týmito prvkami je implementovaná príliš špecifická funkcia.

Matematicky brána XOR vykonáva to, čo sa nazýva sčítanie modulo 2. Preto sa tieto brány nazývajú aj sčítače modulo 2. Ako bolo uvedené v predchádzajúcej prednáške, súhrnný modul 2 je označený znamienkom plus uzavretým v kruhu.

Hlavné využitie prvkov XOR, ktoré z toho priamo vyplýva pravdivostné tabuľky, spočíva v porovnaní dvoch vstupných signálov. V prípade, že na vstupy dorazia dve jednotky alebo dve nuly (signály sa zhodujú), na výstupe sa vytvorí nula (pozri tabuľku 4.1). Typicky sa v tejto aplikácii na jeden vstup prvku aplikuje konštantná úroveň, s ktorou sa porovnáva časovo premenný signál prichádzajúci na druhý vstup. Oveľa častejšie sa však na porovnávanie signálov a kódov používajú špeciálne mikroobvody. porovnávače kódov o ktorom bude reč v nasledujúcej prednáške.

Ako sčítací modul 2 sa prvok Exclusive OR používa aj v paralelných a sekvenčných deličoch modulo 2, ktoré sa používajú na výpočet cyklického kontrolné súčty... Tieto schémy však budú podrobne prediskutované v prednáškach 14,15.

Dôležitým použitím prvkov Exclusive OR je riadený menič (obrázok 4.2). V tomto prípade je jeden zo vstupov prvku použitý ako ovládací prvok a na druhý vstup prvku je odoslaný informačný signál. Ak je riadiaci vstup jeden, potom je vstupný signál invertovaný, ak je nulový, nie je invertovaný. Často riadiaci signál je nastavená konštantnou úrovňou, definujúcou režim činnosti prvku, a informačný signál je impulzný. To znamená, že prvok Exkluzívny ALEBO môže zmeniť polaritu vstupného signálu alebo okraja, alebo sa nemôže zmeniť v závislosti od riadiaci signál.


Ryža. 4.2.

V prípade, že existujú dva signály s rovnakou polaritou (kladný alebo záporný) a ich súčasný príchod je vylúčený, na zmiešanie týchto signálov je možné použiť prvok Exclusive OR (obr. 4.3). Pri akejkoľvek polarite vstupných signálov budú výstupné signály prvku kladné. Pri pozitívnych vstupných signáloch bude prvok Exclusive OR fungovať ako prvok 2OR a pri negatívnych vstupoch nahradí prvok 2NAND. Také substitúcie môžu byť užitočné v prípadoch, keď niektoré exkluzívne OR prvky zostanú v obvode nepoužité. Je pravda, že to treba mať na pamäti oneskorenie šírenia signál v prvku Exclusive OR je zvyčajne o niečo väčší (asi 1,5-krát) ako oneskorenie v najjednoduchších prvkoch AND, AND, AND-NOT, OR, OR-NOT.

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). Nižšie sú uvedené hlavné 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) a b (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ívne 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 sa bude rovnať 1 (jedna), ak sa jeden z bitov a alebo b rovná 1 (jedna), vo všetkých ostatných prípadoch sa výsledok rovná 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 ++.

V tomto článku si povieme niečo o bitových operáciách. Uvažujme o hlavných: XOR (exkluzívne ALEBO), A (A), NIE (NE) a ALEBO (ALEBO).

Ako viete, minimálna jednotka merania informácií je trocha, ktorý ukladá jednu z 2 hodnôt: 0 ( Falošné, false) alebo 1 ( Pravda, pravda). Bitová bunka teda môže byť súčasne iba v jednom z dvoch možných stavov.

Na manipuláciu s bitmi sa používajú určité operácie - logické alebo booleovské... Dajú sa použiť na akýkoľvek bit bez ohľadu na to, či je nula alebo jedna. Pozrime sa na príklady použitia troch základných logických operácií.

Logická operácia AND (a)

A označené &.

Operátor AND sa vykonáva s 2 bitmi, vezmite napríklad a a b. Výsledok AND je 1, ak a a b sú 1. V opačnom prípade je výsledok 0. Napríklad s pomocou AND môžete zistiť, či je číslo párne alebo nie.

Pozrite sa na tabuľku pravdy operácie AND:

Logická operácia ALEBO

Označené znakom | ...

Operátor ALEBO tiež urobené s 2 bitmi (a a b). Výsledok je 0, ak a a b sú 0, v opačnom prípade je 1. Pozrite sa na tabuľku pravdy.

Logický XOR (exkluzívny ALEBO)

Operátor XOR je označený ^.

XOR vykonaná s 2 bitmi (a a b). Výsledok operácie XOR ( exkluzívne ALEBO) je 1, keď jeden z bitov b alebo a je 1. V opačnom prípade je výsledok operátora XOR 0.

Pravdivá tabuľka logickej operácie pre XOR (exkluzívne OR) vyzerá takto:

Pomocou XOR (exkluzívne ALEBO) môžete zameniť hodnoty 2 premenných rovnakého dátového typu bez použitia dočasnej premennej. A tiež pomocou XOR môžete šifrovať text, napríklad:

String msg = "Toto je správa"; char správa = msg.toCharArray (); Kľúč reťazca = ". *)"; Reťazec encryptedString = nový String (); pre (int i = 0; i< message.length; i++){ encryptedString += message[i]^key.toCharArray(); }

Súhlasím s tým, že XOR je ďaleko od najspoľahlivejšej metódy šifrovania, ale to neznamená, že nemôže byť súčasťou žiadneho šifrovacieho algoritmu.

Logická operácia NIE

Toto je bitová negácia, preto sa vykonáva s jedným bitom a označuje sa ~.

Výsledok závisí od stavu bitu. Ak je v nulovom stave, potom je výsledok operácie jeden a naopak. Všetko je veľmi jednoduché.

Tieto 4 logické operácie by ste si mali predovšetkým zapamätať, pretože s ich pomocou môžete dosiahnuť takmer akýkoľvek možný výsledok. Existujú aj prevádzky ako napr<< (побитовый сдвиг влево) и >> (bitový posun doprava).

Inštrukcia XOR v Assembleri vykonáva exkluzívnu operáciu OR medzi všetkými bitmi dvoch operandov. Výsledok operácie XOR je zapísaný do prvého operandu. Syntax:

XOR PRIJÍMAČ, ZDROJ

Inštrukcia XOR vždy vymaže CF a OF a tiež (v závislosti od výsledku) zmení vlajky SF, ZF a PF. Hodnota príznaku AF môže byť čokoľvek - nezávisí to od výsledku operácie.

RECEIVER môže byť jeden z nasledujúcich:

  • Oblasť pamäte (MEM)

ZDROJ môže byť jeden z nasledujúcich:

  • Oblasť pamäte (MEM)
  • Registrovať všeobecný účel(REG)
  • Okamžitá hodnota - konštantná (IMM)

Ak vezmeme do úvahy obmedzenia, ktoré boli popísané vyššie, kombinácie SINTER a ZDROJ môžu byť nasledujúce:

REG, MEM MEM, REG REG, REG MEM, IMM REG, IMM

Exkluzívna prevádzka ALEBO

Pri vykonávaní exkluzívnej operácie ALEBO bude výsledok 1, ak sú porovnávané bity odlišné (nie sú rovnaké). Ak porovnávané bity majú rovnakú hodnotu potom bude výsledok 0.

Preto sa táto operácia nazýva exkluzívna. Z porovnania vylúči identické bity a vykoná operáciu s nerovnakými.

Pretože však každý pár nerovnakých bitov je 0 a 1, logická operácia OR bude mať za následok 1.

Exkluzívna ALEBO tabuľka pravdy

Tabuľka pravdy XOR je uvedená nižšie:

0 XOR 0 = 0 0 XOR 1 = 1 1 XOR 0 = 1 1 XOR 1 = 0

Vlastnosti operácie XOR

Operácia XOR je reverzibilná. Ak sa vykoná dvakrát s rovnakým operandom, výsledná hodnota sa obráti. To znamená, že ak túto operáciu vykonáte dvakrát medzi bitmi X a Y, potom v konečnom dôsledku dostaneme pôvodnú bitovú hodnotu NS.

0 XOR 0 = 0 XOR 0 = 0 0 XOR 1 = 1 XOR 1 = 0 1 XOR 0 = 1 XOR 0 = 1 1 XOR 1 = 0 XOR 1 = 1

Túto vlastnosť je možné použiť napríklad na najjednoduchšie šifrovanie údajov (o tom niekedy inokedy).

Kontrola parity po operácii XOR

Príkaz XOR pracuje s 8, 16 a 32 bitovými operáciami.

Niekedy je po vykonaní operácie potrebné skontrolovať paritný príznak PF, aby sa zistilo, koľko jednotlivých bitov (párnych alebo nepárnych) obsahuje nízky bajt výsledok (to je niekedy nevyhnutné nielen pri vykonávaní operácie XOR, ale aj pri iných aritmetických a logických operáciách).

Ak je nastavený príznak parity, výsledkom je párny počet jedného bitu. V opačnom prípade bude vlajka vymazaná.

Môžete tiež skontrolovať rovnomernosť ľubovoľného čísla bez toho, aby ste zmenili hodnotu výsledku. Ak to chcete urobiť, musíte vykonať príkaz XOR s nulovou hodnotou. To znamená, že v PRIJÍMAČI musí byť začiarknuté číslo a v ZDROJI musí byť nula. A potom musíte skontrolovať vlajku parity. Príklad:

AL, 10110101b; Vložte do AL číslo s nepárnym; počet jedného bitu (5) XOR AL, 0; V tomto prípade paritný príznak PF nie je; nastavte (PO) MOV AL, 10110111b; Vložte do AL číslo s párnym; počtom jedného bitu (6) XOR AL, 0; V tomto prípade bude nastavený príznak parity PF; (PE)

V debuggeroch sa na označenie párneho počtu jednotiek vo výslednom výsledku zvyčajne používa skratka PE (párny párny) a pre nepárne číslo PO (paritný nepárny).

Parita v 16-bitových slovách

Ako už bolo uvedené, príznak parity je nastavený v závislosti od počtu jednotiek obsiahnutých v dolnom bajte výsledku. Ak chcete skontrolovať paritu 16-bitového operandu, musíte vykonať inštrukciu XOR medzi hornými a dolnými bytmi tohto čísla:

MOV AX, 64C1h; 0110 0100 1100 0001 - 6 jednobitových XOR AH, AL; nastaví sa príznak parity

Týmto jednoduchým spôsobom je 16-bitový operand rozdelený na dva bajty (2 skupiny po 8 bitov) a keď je spustená inštrukcia XOR, tie, ktoré sú v zodpovedajúcich bitoch dvoch 8-bitových operandov, nebudú brané do úvahy . Pretože zodpovedajúci bit výsledku je nula.

Inštrukcia XOR odstráni z výsledku všetky prekrývajúce sa 1 bity z dvoch 8-bitových operandov a do výsledku pridá neprekrývajúci sa 1 bit. To znamená, že parita 8-bitového čísla, ktoré sme dostali, bude rovnaká ako parita pôvodného 16-bitového čísla.

0110 0100 1100 0001 - pôvodné 16-bitové číslo 0 XOR 1 = 1 1 XOR 1 = 0 1 XOR 0 = 1 0 XOR 0 = 0 0 XOR 0 = 0 1 XOR 0 = 1 0 XOR 0 = 0 0 XOR 1 = 1

V dôsledku toho budú nastavené 4 jednotky, to znamená príznak PF

Parita v 32-bitových dvojslovách

Ale čo keď potrebujete určiť paritu v 32-bitovom čísle?

Potom je číslo rozdelené na štyri bajty a striedavo s týmito bytmi sa vykonáva exkluzívna operácia ALEBO.

Napríklad sme rozdelili 32-bitové číslo B o štyri bajty B0, B1, B2, B3, kde B0 je najmenej významný bajt.

Potom na určenie parity čísla B budeme musieť použiť nasledujúci vzorec:

B0 XOR B1 XOR B2 XOR B3

Ale takýto zápis nie je v assembleri povolený. Takže musíte trochu premýšľať.

A na záver o vzniku mnemotechnických pomôcok XOR... Angličtina má slovo e X výnimka je výnimkou. Skratka pre toto slovo je písmeno NS(tak sa aj stalo). Pravdepodobne ste to videli v reklamách alebo v názvoch výrobkov, ktorých výrobcovia tvrdia (alebo si myslia, že tvrdia), že sú exkluzívne. Napríklad Lada XRAY, Sony XPeria atď. XOR je teda dvojslovná skratka - napr X výnimka ALEBO- exkluzívne ALEBO.