Loogiline element, välja arvatud või. Loogilised operaatorid VBA loogiline operatsioon, välja arvatud või

Sageli, et demonstreerida piiranguid ühekihilise perceptronide probleemide lahendamisel, see on kasutanud kaaluda nn probleemi. Xor - eksklusiivne või.

Ülesande olemus on järgmine. Loogiline funktsioon Xor ei välista või. See funktsioon on kahest argumentidest, millest igaüks võib olla null või üksus. See võtab väärtuse, kui üks argumendid on võrdne ühe, kuid mitte mõlemad, muidu. Probleemi saab illustreerida ühekihilise üheaesisese süsteemi abil, millel on kaks toodud joonisel näidatud sisendit.

Märgistage üks sisend ja teine \u200b\u200bläbi, siis kõik nende võimalikud kombinatsioonid koosnevad neljast piirkonnast tasapinnal. Alljärgnevas tabelis näitab vajalikku seost sisendite ja väljundi vahel, kus sisendkombinatsioonid, mis peaksid sisaldama nulltoodangut, on märgistatud ja ühekordne väljund - ja.

Punkt Väärtus Väärtus Nõutav väljund
0 0 0
1 0 1
0 1 1
1 1 0

Üks neuron kahe sisendiga võib moodustada otsustava pinna vormis suvalise sirge joone. Selleks, et võrk Xor-funktsiooni rakendamiseks, ülaltoodud tabelis, peate otseselt asendama, et punktid oleksid sirge ühel küljel ja punkt on teises. Olles püüdnud joonistada sellist sirget joont allapoole, veendume, et see on võimatu. See tähendab, et mis tahes väärtused omistatakse kaalude ja künnise, ühekihiline närvivõrk ei suuda reprodutseerida suhe sisendi ja väljundi vahel, mis on vajalik Xor funktsiooni esindamiseks.

Kuid XOR funktsioon on kergesti moodustatud kahekihilise võrguga ja mitmel viisil. Mõtle ühel neist viisidest. Me uuendame võrku joonisel, lisades teise peidetud neuronite kihi:

Pange tähele, et see võrk on antud nii, nagu see on, st Me võime eeldada, et see on juba koolitatud. Numbrid üle nooled näitavad väärtusi sünaptiliste kaalude. Aktiveerimisfunktsioonina rakendame ühe hüppe funktsiooni, mille künnis on järgmine diagramm:

Seejärel võib sellise närvivõrgu toimimise tulemust esindada järgmises tabelis:

Punkt Väärtus Väärtus Nõutav väljund
0 0 0 0 0 0
1 0 1 1 0 1
0 1 1 0 1 1
1 1 0 0 0 0

Iga kahe esimese kihi neuronite moodustab suvalise sirgjoone kujul otsustava pinna (jagab tasapinna kaheks poolplokkidesse) ja väljundkihi neuronises ühendab need kaks lahust, moodustades otsustava pinna esimese kihi paralleelsete sirge neuronitega moodustatud riba vorm:

Selles artiklis kasutatav närvivõrk Xor ülesande lahendamiseks on primitiivne ja ei kasuta kõiki mitmekihiliste võrkude võimalusi. On ilmne, et mitmekihiline närvivõrgustikud on suurema esindava võimsusega kui ühekihiline, ainult mittelineaarsuse esinemise korral. Ja selles võrgus rakendatakse künniselise lineaarset aktiveerimisfunktsiooni. Sellist võrku ei saa koolitada näiteks vigade jaotamise algoritmi rakendamisel.

Nende poolt teostatud funktsioon on mõnevõrra keerulisem kui üksuse ja või elemendi puhul või. Kõik elementide sisendid, välja arvatud või võrdsed, kuid ükski sisend ei tohi blokeerida teisi sisendeid, seadistades väljundsignaali seadmele või nulltasemele. Tabel 4.1. Tank Välja arvatud kahesuunalised elemendid
Logi sisse 1. Sisselogimine 2. Väljund
0 0 0
0 1 1
1 0 1
1 1 0


Joonis fig. 4.1.

Funktsiooni all, välja arvatud järgmised või viitavad järgmistele seadmetele: väljundi seade ilmub siis, kui esineb ainult üks sisend. Kui sisendite osakud on kaks või enam, või kui üldse nulli sisendid, siis väljund on null. Tank Kahekordne element on tabelis välja jäetud või esitatud. 4.1. Siseriiklikes ja välisteadustes vastuvõetud nimetused on näidatud joonisel fig. 4.1. Elemendi kodumaise nimetuse pealkiri ei sisalda või "\u003d 1" Lihtsalt näitab, et olukord on eristatav, kui üks ja ainult üks üksus on sisendites.

Elemendid, välja arvatud standardse seeriaga. Kodumajapidamiste seeria pakub LP5 kiipe (neli kahe telje elemente 2C väljundiga), LL3 ja LP12, erinevad LP5 OK väljundist. Nende elementide abil rakendatakse liiga konkreetset funktsiooni.

Matemaatika seisukohast, element, välja arvatud mooduli nn summeerimise toimimine või seetõttu nimetatakse neid elemente ka mooduli lisavaks. Nagu eelmises loengis juba märgitud, on mooduli 2 summeerimine plussmärk ümbritsetud ringis.

Elementide peamine kasutamine, välja arvatud otse järgmine tõe tatasetidSee koosneb kahe sisendsignaali võrdlemisel. Juhul kui kaks ühikut või kaks nulli sisenditesse (signaalid langevad kokku), moodustub null väljundil (vt tabel 4.1). Tavaliselt tarnitakse selle rakendusega alaline tase ühele elemendi sisendile, millega ajavahendav signaal on teise sisendi juurde. Kuid märkimisväärselt sagedamini signaalide ja koodide võrdlemiseks rakendage spetsiaalseid kiipe võrreldavad Codovmida arutatakse järgmise loenguga.

Adder moodulina 2 element on välistatud või kasutatud paralleelselt ja järjestikuste ja järjestikuse jagaja mooduli 2, mis selgub tsükliliste kontrollide arvutamiseks. Kuid neid skeeme käsitletakse üksikasjalikult loengutes 14.15.

Oluline elementide oluline kasutamine, välja arvatud hallatud inverter (joonis 4.2). Sellisel juhul kasutatakse üks elementide sisendeid juhina ja teabesignaal on teise elemendi juurde. Kui seade on sisend, siis sisendsignaal on ümberpööratud, kui null ei ole ümberpööratud. Kõige sagedamini juhtimissignaal Seade konstantse tasemega, määratledes elemendi režiimi ja teabesignaal on impulss. See tähendab, et element, välja arvatud sisendsignaali või esikülje polaarsus või seda ei tohi muuta sõltuvalt sellest juhtimissignaal.


Joonis fig. 4.2.

Juhul, kui on olemas kaks sama polaarsuse signaali (positiivne või negatiivne) ja samal ajal on nende üheaegne saabumine välistatud, välistab element või seda saab kasutada nende signaalide segamiseks (joonis 4.3). Sisendsignaalide polaarsusega on elemendi väljundsignaalid positiivsed. Positiivsete sisendsignaalidega element, välja arvatud element 2 ja negatiivse see asendab element 2i - mitte. Sellised asendused võivad olla kasulikud juhtudel, kui mõned elemendid välistavad või jäetakse diagrammi. Tõsi, see peaks meeles pidama jaotuslaud Elemendis olev signaal on välistatud või tavaliselt mõnevõrra suurem (umbes 1,5 korda) kui kõige lihtsamate elementide ja mitte või mitte.

Bitt on minimaalne informatsiooni mõõtmise üksus, kuna see salvestab ühe kahest väärtusest - 0 (False) või 1 (TRUE). Vale ja tõsi tõlgitud vene vale ja tõde. See tähendab, et üks bitine rakk saab samaaegselt ainult ühes võimalikus kahes osas. Lubage mul teile meelde tuletada, kaks võimalikku lits rakku on võrdsed - 1 ja 0.
On teatavaid operatsioone manipulatsioonide bittiga. Neid toiminguid nimetatakse loogilisteks või Boole'i \u200b\u200btegevuseks, mis on nime saanud ühe matemaatikute kohta - George Bus (1815-1864), mis aitas kaasa selle teadusvaldkonna arengule.
Kõiki neid toiminguid saab rakendada mistahes bitt, olenemata sellest, milline see sobib - 0 (null) või 1 (üks). Allpool on peamised loogilised toimingud ja nende kasutamise näited.

Loogika töö ja (ja)

Nimetus ja: &

Loogiline töö ja viiakse läbi kahe bittiga, helistame neile a ja b. Loogilise töö tulemus ja see on võrdne 1-ga, kui A ja B on võrdsed 1-ga ja kõigis teistes (teistes) juhtudel on tulemus võrdne 0. Me vaatame loogilise operatsiooni tõde tabelit ja .

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

Loogika või (või)

Või: |

Loogiline operatsioon või täidetakse kahe bittiga (A ja B). Loogilise töö teostamise tulemus või 0, kui A ja B on võrdsed 0-ga (null) ja kõigis teistes (teistes) juhtudel, tulemus on 1 (üksus). Me vaatame loogilise operatsiooni tõe tabeli või.

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

Loogiline operatsioon, välja arvatud (Xor).

Nimetus Xor: ^
Loogiline operatsioon on välja jäetud või täidetakse kahe bittiga (A ja B). Xor Loogikaoperatsiooni tulemus on võrdne 1 (üksus), kui üks bitt A või B on 1 (üksus), kõigil muudel juhtudel on tulemus 0 (null). Me vaatame loogilise töö tõe tabeli, välja arvatud Or.

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

Loogiline operatsioon ei ole (mitte)

Märkus mitte: ~
Loogilist operatsiooni ei teostata ühe bittiga. Selle loogilise operatsiooni täitmise tulemus sõltub otseselt natuke osariigist. Kui bitti oli nullriigis, ei ole täitmise tulemus võrdne ühe ja vastupidi. Me vaatame loogilise operatsiooni tõe tabeli.

a (bit 1) ~ A (bitti eitamine)
0 1
1 0

Pea meeles neid 4 loogilist tegevust. Nende loogiliste toimingute abil saame võimaliku tulemuse. Detailid loogiliste operatsioonide kasutamise kohta C ++ Loe.

Selles artiklis räägime mõnede bititeoperatsioonidest. Kaaluge peamisi: XOR (välja arvatud või) ja (ja), mitte (ei), samuti või (või).

Nagu on teada, on teabe mõõtmise miinimumühik natukemis salvestab üks 2 väärtusest: 0 ( Vale, valed) või 1 ( Tõsi., Tõde). Seega võib natuke rakk samaaegselt olla ainult ühes kahes kahes võimalikes riikides.

Manipulatsioone bittiga kasutatakse teatud toiminguid - loogika või boolean. Neid saab rakendada mis tahes natuke, olenemata sellest, milline on selle väärtus null või üksus. Noh, vaatame näiteid kolme põhilise loogilise tegevuse kasutamisest.

Loogika töö ja (ja)

Ja. tähistab märk ja.

Ja operaator teostatakse 2 bittiga, me võtame näiteks a ja b. Operatsiooni toimimise tulemus ja on võrdne 1, kui A ja B on võrdsed 1. Muudel juhtudel on tulemus 0. Näiteks abiga ja saate teada, ise number või mitte.

Vaata tõde tabelit ja:

Loogika või (või)

Tähistab märk | .

Operaator Or. Ka läbi 2 bitti (A ja B). Tulemuseks on 0, kui A ja B on 0, vastasel juhul on see võrdne 1. Me vaatame tõde tabelit.

Loogika töö XOR (va või)

XOR avaldus on tähistatud ^.

Xor. Läbi 2 bitti (A ja B). Xor operatsiooni toimimise tulemus ( välja arvatud või) Võrdne 1, kui üks bitti b või a on 1. Muudes olukordades, XOR-i avalduse kasutamise tulemus on 0.

XORi loogilise töö tõde tabel (välja arvatud või) näeb välja selline:

XORi kasutamine (eksklusiivne või) saate muuta 2 muutuva identse andmeliigi väärtusi, ilma ajutise muutuja kasutamiseta. Ja ka Xor abil saate teksti krüpteerida näiteks:

String msg \u003d "See on sõnum"; Char sõnum \u003d msg.tocaarray (); String Key \u003d ". *)"; String krüpteeritudString \u003d uus string (); for (int i \u003d 0; i< message.length; i++){ encryptedString += message[i]^key.toCharArray(); }

Nõustun, Xor on kaugel kõige usaldusväärsem krüpteerimismeetodist, kuid see ei tähenda, et seda ei saa osa krüpteerimisalgoritmi osaks osaks.

Ei ole loogiline operatsioon (mitte)

See on partii eitamine, mistõttu see toimub ühe bitiga ja tähistatakse ~.

Tulemuseks sõltub natuke staatusest. Kui see on nullriigis, on operatsiooni tulemus üksus ja vastupidi. Kõik on äärmiselt lihtne.

Neid 4 loogilist tegevust tuleks peamiselt meeles pidada, sest nende abiga saate peaaegu võimaliku tulemuse. On ka toiminguid nagu<< (побитовый сдвиг влево) и >\u003e (bit-nihke paremale).

Komplekti Xor käsk teostab erandi või kõigi kahe operandi bitti vahel. XORi kasutamise tulemus salvestatakse esimeses operandis. Süntaksi:

Xor vastuvõtja, allikas

XOR-i avaldus langeb alati CF-i ja, samuti (sõltuvalt tulemusest) muudab lipu SF, ZF ja PF. AF lipu väärtus võib olla ükskõik - see ei sõltu operatsiooni tulemustest.

Vastuvõtja võib olla üks järgmistest:

  • Mäluala (MEM)

Allikas võib olla üks järgmistest:

  • Mäluala (MEM)
  • Üldotstarbeline register (Reg)
  • Otsene väärtus - konstantne (IMM)

Võttes arvesse eespool kirjeldatud piiranguid, võib lähtevastuvõtja kombinatsioon olla järgmine:

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

Väljajätmise või

Eksklusiivse või väärtuse täitmisel on see võrdne 1-ga, kui bitti võrreldakse (mitte võrdne). Kui bitt võrreldes on sama väärtusega, tulemus on võrdne 0-ga.

Seetõttu nimetatakse seda operatsiooni eksklusiivseks. See kõrvaldab samad bitti võrdlusest ja ebavõrdse tegevuse toiminguga.

Kuid kuna igasugune ebavõrdsete bitte paar on 0 ja 1, siis loogilise või tulemuse toimimine annab 1.

Tatac tõde välja arvatud

Tõde tabelis on allpool:

0 Xor 0 \u003d 0 Xor 1 = 1 1 Xor 0 \u003d. 1 1 Xor. 1 = 0

Xor operatsiooni funktsioonid

XOR-operatsioonil on pöörduvusomadus. Kui te täidate kaks korda sama operandiga kaks korda, siis väärtus väärtus on ümberpööratud. See tähendab, et kui täidate seda operatsiooni bitti vahel X. ja Y.Lõppkokkuvõttes saame esialgse partii väärtuse H..

0 Xor. 0 \u003d 0 Xor 0 = 0 0 Xor. 1 \u003d 1 XOR. 1 = 0 1 Xor. 0 \u003d 1 XOR. 0 = 1 1 Xor. 1 \u003d 0 Xor 1 = 1

Seda vara saab kasutada näiteks lihtsamate andmete krüpteerimise jaoks (see on kuidagi teine).

Flag-i kontrollimine pärast Xor operatsiooni

Xor käsk töötab 8-, 16- ja 32-bitine operatsioonidega.

Mõnikord on vaja kontrollida PF lipu pärast operatsiooni teostamist, et teada saada, mitu ühiku bitti (isegi paaritu) sisalduvad junior Bay Tulemus (see on vajalik mitte ainult siis, kui XOR operatsioon teostatakse, vaid ka teiste aritmeetiliste ja loogiliste operatsioonide teostamisel).

Kui lipp on paigaldatud, siis tulemus on selge hulk üksikuid bitte. Vastasel juhul lähtestatakse lipp.

Võite lihtsalt kontrollida mis tahes numbrit, muutmata tulemuse väärtust. Selleks peate täitma Xor-käsu nullväärtusega. See tähendab, et vastuvõtja peab olema kontrollitav number ja allikas peaks olema null. Ja siis peate kontrollima veendumuste lipu. Näide:

L number lugejaga; üksiku bitti (6) xor al, 0; sel juhul määratakse PF lipu all (PE)

Debuggersis kasutatakse PE redutseerimist, et näidata tulemusena tekkinud osakute arvu ja paaritu - po (pariteedi veider).

Valmis 16-bitiste sõnadega

Nagu juba mainitud, määratakse uskude lipp sõltuvalt nooremates tulemustes sisalduvate üksuste arvust. 16-bitise operandi lugeja kontrollimiseks peate täitma selle numbri vanemate ja noorimate baitide vahel XORi käsu:

MOV AX, 64C1H; 0110 0100 1100 0001 - 6 ühe bitti Xor Ah, Al; valmisoleku lipu paigaldatakse

Sellisel lihtsal viisil jagatakse 16-bitine operand kaheks baiksiks (2 rühma 8 bitti) ja Xor käsu teostamisel ei võeta ühekordseid bitti, mis on kahe 8-bitiste operandi vastavates heidetes. konto. Kuna vastav bitt tulemus on null.

Xor käsk eemaldab kõik lõikuvad ühiku bitid kahe 8-bitiste operandi tulemus ja lisab pöördvõrdeliikide tulemus. See tähendab, et meie poolt saadud 8-bitise numbri valmisolek on sama, mis algse 16-bitise numbri valmisolek.

0110 0100 1100 0001 - Allikas 16-bitine number 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

Selle tulemusena paigaldatakse 4 ühikut, st Flag

Valmis 32-bitises kahes sõnas

Noh, kui teil on vaja määrata valmisolekut 32-bitises numbri?

Siis number on jagatud nelja baiti ja see on vaheldumisi nende baiti, operatsiooni teostatakse või.

Näiteks murdsime 32-bitise numbri B. Neli baiti B0., B1., B2., B3.kus B0. - See on noorem bait.

Seejärel määrake numbri valmisoleku määramine me kasutame järgmise valemi:

B0 XOR B1 XOR B2 XOR B3

Aga kokkupanek, selline kirje on vastuvõetamatu. Seetõttu peate veidi mõtlema.

Ja lõpuks, mnemonika päritolu Xor.. On sõna E inglise keeles X.- erand. Selle sõna vähendamine on kiri H. (Nii et see oli vajalik). Tõenäoliselt kohtusite sellise reklaami või toodete nimed, mille tootjad väidavad (hästi või arvavad, et väide) ainuõiguse. Näiteks Lada Xray, Sony Xperia jne Nii et Xor on lühend, mis kogutakse kahest sõnast - e X.vahend Or. - välja arvatud Or.