Xor kroz osnovne operacije. Osnovne logičke operacije (i, ili, xor, ne)

Dom / Mobilni uređaji

U ovom članku ću vam reći kako funkcioniraju bitne operacije. Na prvi pogled vam mogu izgledati komplikovano i beskorisno, ali u stvarnosti to uopće nije tako. U to ću pokušati da vas uvjerim.

Uvod

Bitovi operatori rade direktno na bitovima broja, tako da će brojevi u primjerima biti binarni.

Ja ću pokriti sljedeće bitne operatore:

  • | (bitno OR),
  • & (Bitwise AND (AND)),
  • ^ (Isključivo OR (XOR)),
  • ~ (bitna negacija (NE)),
  • << (Побитовый сдвиг влево),
  • >> (Bitovski pomak udesno).

Bitne operacije se proučavaju u diskretnoj matematici, a čine i osnovu digitalne tehnologije, budući da se na njima zasniva logika rada logičkih kapija, osnovnih elemenata digitalnih kola. U diskretnoj matematici, kao iu digitalnom inženjerstvu, tablice istinitosti se koriste za opisivanje njihovog rada. Tablice istine, čini mi se, uvelike olakšavaju razumijevanje bitnih operacija, pa ću ih predstaviti u ovom članku. Oni se, međutim, gotovo nikada ne koriste u objašnjenjima bitskih operatora u programskim jezicima visokog nivoa.

Također morate znati o bit operatorima:

  1. Neki bitni operatori su slični operatorima koje ste vjerovatno upoznati (&&, ||). To je zato što su zapravo na neki način slični. Međutim, ne treba ih zbuniti ni pod kojim okolnostima.
  2. Većina bitnih operacija su složene operacije dodjeljivanja.

Bitwise OR

Bitno OR djeluje ekvivalentno logičkom OR, ali se primjenjuje na svaki par bitova binarnog broja. Binarni bit rezultata je 0 samo kada su oba odgovarajuća bita u 0. U svim ostalim slučajevima, binarni rezultat je 1. To jest, ako imamo sljedeću tablicu istinitosti:

38 | 53 će biti ovako:

A 0 0 1 0 0 1 1 0
B 0 0 1 1 0 1 0 1
A | B 0 0 1 1 0 1 1 1

Kao rezultat, dobivamo 110111 2 ili 55 10.

Bitwise AND

Bitwise AND je vrsta suprotna operacija od bitwise OR. Binarna cifra rezultata je 1 samo kada su oba odgovarajuća bita operanda jednaka 1. Drugim riječima, možemo reći da su binarne cifre rezultirajućeg broja rezultat množenja odgovarajućih bitova operanda: 1x1 = 1, 1x0 = 0. Sljedeća tabela istinitosti odgovara bitskom I:

Primjer pobitnog I rada na izrazu 38 i 53:

A 0 0 1 0 0 1 1 0
B 0 0 1 1 0 1 0 1
A&B 0 0 1 0 0 1 0 0

Kao rezultat, dobijamo 100100 2 ili 36 10.

Možete koristiti bitni AND operator da provjerite da li je broj paran ili neparan. Za cijele brojeve, ako je najmanji bitni bit 1, tada je broj neparan (zasnovano na binarnoj konverziji u decimalni). Zašto je ovo potrebno ako samo možete koristiti %2? Na mom računaru, na primjer, &1 radi 66% brže. Prilično dobro povećanje performansi, da vam kažem.

Isključivo ILI (XOR)

Razlika između XOR-a i bitnog OR-a je u tome što za proizvodnju 1 samo jedan bit u paru može biti 1:

Na primjer, izraz 138^43 će biti jednak...

A 1 0 0 0 1 0 1 0
B 0 0 1 0 1 0 1 1
A^B 1 0 1 0 0 0 0 1

… 10100001 2 ili 160 10

Koristeći ^ možete promijeniti vrijednosti dvije varijable (koje imaju isti tip podataka) bez korištenja privremene varijable.

Također možete šifrirati tekst koristeći ekskluzivno OR. Da biste to učinili, trebate samo ponoviti kroz sve znakove i ^ ih sa ključnim znakom. Za složeniju šifru možete koristiti niz znakova:

String msg = "Ovo je poruka"; char poruka = ​​msg.toCharArray(); String ključ = ".*)"; String encryptedString = novi String(); for(int i = 0; i< message.length; i++){ encryptedString += message[i]^key.toCharArray(); }

XOR nije najsigurniji metod šifriranja, ali se može učiniti dijelom algoritma šifriranja.

Bitna negacija (NE)

Bitna negacija invertuje sve bitove operanda. To jest, ono što je bilo 1 postaće 0, i obrnuto.

Na primjer, evo operacije ~52:

A 0 0 1 1 0 1 0 0
~A 1 1 0 0 1 0 1 1

Rezultat će biti 203 10

Kada koristite bitnu negaciju, predznak rezultata će uvijek biti suprotan predznaku originalnog broja (kada se radi s brojevima s predznakom). Saznajte zašto se to događa upravo sada.

Dodatni kod

Ovdje bih vam trebao reći nešto o načinu predstavljanja negativnih cijelih brojeva u kompjuteru, odnosno o komplementarnom kodu dva. Ne ulazeći u detalje, potrebno je olakšati aritmetiku binarnih brojeva.

Glavna stvar koju trebate znati o brojevima napisanim u komplementu dva je da je najznačajniji bit potpisan. Ako je 0, tada je broj pozitivan i poklapa se sa prikazom ovog broja u direktnom kodu, a ako je 1, onda je negativan. To jest, 10111101 je negativan broj, a 01000011 je pozitivan broj.

Da biste konvertovali negativan broj u komplement njegovih dva, trebate invertirati sve bitove broja (u suštini koristeći bitnu negaciju) i dodati 1 rezultatu.

Na primjer, ako imamo 109:

A 0 1 1 0 1 1 0 1
~A 1 0 0 1 0 0 1 0
~A+1 1 0 0 1 0 0 1 1

Sa gornjom metodom dobijamo -109 u kodu komplementa dva.
Vrlo pojednostavljeno objašnjenje dodatnog koda je upravo predstavljeno i preporučujem vam da detaljnije proučite ovu temu.

Pobitni pomak lijevo

Pomaci bita se malo razlikuju od bitnih operacija o kojima smo ranije govorili. Bitov pomak lijevo pomjera bitove svog operanda N broj bitova ulijevo, počevši od najmanjeg bita. Prazni prostori nakon pomaka se popunjavaju nulama. To se dešava ovako:

A 1 0 1 1 0 1 0 0
A<<2 1 1 0 1 0 0 0 0

Zanimljiva karakteristika pomeranja ulevo za N pozicija je da je to ekvivalentno množenju broja sa 2 N. Dakle 43<<4 == 43*Math.pow(2,4) . Использование сдвига влево вместо Math.pow обеспечит неплохой прирост производительности.

Pobitni pomak udesno

Kao što možete pretpostaviti, >> pomiče bitove operanda za određeni broj bitova udesno.

Ako je operand pozitivan, tada se prazni prostori popunjavaju nulama. Ako u početku radimo s negativnim brojem, onda se sva prazna mjesta na lijevoj strani popunjavaju jedinicama. Ovo se radi kako bi se sačuvao znak prema dodatnom kodu objašnjenom ranije.

Budući da je bitsko pomicanje udesno suprotna operacija bitnog pomaka lijevo, lako je pretpostaviti da pomicanje broja udesno za N broj pozicija također dijeli taj broj sa 2 N . Opet, ovo je mnogo brže od uobičajene podjele.

Zaključak

Dakle, sada znate više o bit operacijama i ne plašite ih se. Pretpostavljam da nećete koristiti >>1 svaki put kada podijelite sa 2. Međutim, bitne operacije je dobro imati u svom arsenalu, a sada ih možete koristiti ako je potrebno ili odgovoriti na škakljivo pitanje za intervju.

Često, kako bi demonstrirali ograničene mogućnosti jednoslojnih perceptrona pri rješavanju problema, pribjegavaju razmatranju problema tzv. XOR – ekskluzivno OR.

Suština zadatka je sljedeća. Zadana je logička funkcija XOR - ekskluzivno OR. To je funkcija dva argumenta, od kojih svaki može biti nula ili jedan. Uzima vrijednost kada je jedan od argumenata jednak jednom, ali ne oba, inače. Problem se može ilustrovati korišćenjem jednoslojnog, jednoneuronskog sistema sa dva ulaza, prikazanog na donjoj slici.

Označimo jedan ulaz sa , a drugi sa , tada će se sve njihove moguće kombinacije sastojati od četiri tačke na ravni. Donja tabela prikazuje potreban odnos između ulaza i izlaza, gdje su kombinacije ulaza koje bi trebale proizvesti nulti izlaz označene i , jedan izlaz je označen i .

Poeni Značenje Značenje Potreban izlaz
0 0 0
1 0 1
0 1 1
1 1 0

Jedan neuron sa dva ulaza može formirati površinu odlučivanja u obliku proizvoljne prave linije. Da bi mreža implementirala funkciju XOR navedenu u gornjoj tabeli, trebate postaviti liniju tako da su tačke na jednoj strani linije, a tačke na drugoj. Nakon što smo pokušali nacrtati tako ravnu liniju na donjoj slici, uvjereni smo da je to nemoguće. To znači da bez obzira koje su vrijednosti dodijeljene težinama i pragu, jednoslojna neuronska mreža nije u stanju reproducirati odnos između ulaza i izlaza koji je potreban za predstavljanje funkcije XOR.

Međutim, funkcija XOR se lako formira dvoslojnom mrežom, i to na mnogo načina. Razmotrimo jednu od ovih metoda. Modernizirajmo mrežu na slici dodavanjem još jednog skrivenog sloja neurona:

Imajte na umu da ovu mrežu dato kako jeste, tj. možemo pretpostaviti da je već obučena. Brojevi iznad strelica pokazuju vrijednosti sinaptičkih težina. Kao funkciju aktivacije, koristit ćemo funkciju jednog skoka s pragom koji ima sljedeći grafikon:

Tada se rezultat rada takve neuronske mreže može predstaviti u obliku sljedeće tabele:

Poeni Značenje Značenje Potreban izlaz
0 0 0 0 0 0
1 0 1 1 0 1
0 1 1 0 1 1
1 1 0 0 0 0

Svaki od dva neurona prvog sloja formira površinu odlučivanja u obliku proizvoljne prave linije (dijeli ravan na dvije poluravnine), a neuron izlaznog sloja kombinuje ova dva rješenja, formirajući površinu odlučivanja u oblik trake koju čine paralelne prave linije neurona prvog sloja:

Neuronska mreža korištena u ovom članku za rješavanje XOR problema je primitivna i ne koristi u potpunosti prednosti višeslojnih mreža. Očigledno, višeslojni neuronske mreže imaju veću reprezentativnu moć od jednoslojnih samo u prisustvu nelinearnosti. I u ovoj mreži se primjenjuje funkcija linearne aktivacije praga. Takva mreža se ne može obučiti, na primjer, korištenjem algoritma povratnog širenja.

Apsolutno sva digitalna mikrokola sastoje se od istih logičkih elemenata - "građevnih blokova" bilo kojeg digitalnog čvora. To je ono o čemu ćemo sada razgovarati.

Logički element- Ovo je kolo koje ima nekoliko ulaza i jedan izlaz. Svako stanje signala na ulazima odgovara određenom signalu na izlazu.

Dakle, koji su elementi?

Element "I"

Inače se naziva "konjunktor".

Da biste razumjeli kako to funkcionira, morate nacrtati tabelu koja navodi izlazna stanja za bilo koju kombinaciju ulaznih signala. Ova tabela se zove " tabela istine" Tablice istine se široko koriste u digitalnoj tehnologiji za opisivanje rada logičkih kola.

Ovako izgleda element "AND" i njegova tabela istinitosti:

Pošto ćete morati da komunicirate i sa ruskom i sa buržoaskom tehnikom. dokumentaciju, dat ću simboličke grafičke simbole (GID) elemenata prema našim i nenašim standardima.

Gledamo tabelu istine i razjašnjavamo princip u našem mozgu. Nije teško razumjeti: jedinica na izlazu elementa „AND“ javlja se samo kada se jedinice napajaju na oba ulaza. Ovo objašnjava naziv elementa: jedinice moraju biti I na jednom I na drugom ulazu.

Ako to pogledamo malo drugačije, možemo reći ovo: izlaz elementa „AND“ će biti nula ako se nula primijeni na barem jedan od njegovih ulaza. Podsjetimo se. Idemo dalje.

OR element

Na drugi način, on se naziva "dizjunktor".

divimo se:

Opet, ime govori za sebe.

Jedinica se pojavljuje na izlazu kada se jedinica primjenjuje na jedan ILI na drugi ILI na oba ulaza odjednom. Ovaj element se također može nazvati "AND" elementom za negativnu logiku: nula na njegovom izlazu se javlja samo ako se nule daju i na jedan i na drugi ulaz.

NAPOMENA element

Češće se naziva "inverter".

Trebam li nešto reći o njegovom radu?

NAND element

NAND kapija radi potpuno isto kao AND kapija, samo što je izlazni signal potpuno suprotan. Tamo gdje bi element “AND” trebao imati izlaz “0”, element “AND-NOT” bi trebao imati jedan. I obrnuto. Ovo je lako razumjeti iz ekvivalentnog kola elementa:

Element "NOR" (NOR)

Ista priča - element "ILI" sa pretvaračem na izlazu.

Sljedeći drug je malo lukaviji:
Ekskluzivni OR element (XOR)

on je ovakav:

Operacija koju obavlja često se naziva "zbrajanje po modulu 2". Zapravo, digitalni sabirači su izgrađeni na ovim elementima.

Pogledajmo tabelu istine. Kada je izlazna jedinica? Ispravno: kada ulazi imaju različite signale. Na jednom - 1, na drugom - 0. Eto kako je lukav.

Ekvivalentno kolo je otprilike ovako:

Nije potrebno zapamtiti.

Zapravo, ovo su glavni logički elementi. Apsolutno bilo koja digitalna mikrokola su izgrađena na njihovoj osnovi. Čak i vaš omiljeni Pentium 4.

I na kraju, nekoliko mikro krugova koji sadrže digitalne elemente. Brojevi odgovarajućih krakova mikrokola su naznačeni u blizini terminala elemenata. Svi ovdje navedeni čipovi imaju 14 nogu. Napajanje se dovodi do nogu 7 (-) i 14 (+). Napon napajanja – pogledajte tabelu u prethodnom pasusu.

Označeno figurom govora "ili... ili..." Složena izjava "ili A ili B" je tačna kada je ili A ili B istinito, ali ne oboje; V inače složena izjava je lažna.

One. rezultat je istinit (jednak 1), Ako A nije jednako B (A≠B).

Ova operacija se često uspoređuje s disjunkcijom jer su vrlo slične po svojstvima, a obje imaju sličnosti sa veznikom "ili" u svakodnevnom govoru. Uporedite pravila za ove operacije:

1. istina ako je istina ili , ili oboje odjednom.

2. istina ako je istina ili, Ali Ne oboje odjednom.

Operacija isključuje potonja opcija („oboje odjednom“) i iz tog razloga se naziva isključivo „ILI“. Dvosmislenost prirodni jezik je da se veznik "ili" može koristiti u oba slučaja.

5. Implikacija (logična posljedica) formira se spajanjem dva iskaza u jednu koristeći govornu figuru „ako ... onda ....".

Snimanje: A®B

Složeni iskaz formiran operacijom implikacije je lažan ako i samo ako lažni zaključak (drugi iskaz) slijedi iz istinite premise (prva izjava).

One. ako 1 implicira 0, onda je rezultat 0, u ostalim slučajevima – 1.

Na primjer, izjava "Ako je broj djeljiv sa 10, onda je djeljiv sa 5" je tačan jer i prva i druga tvrdnja su tačne.

Tvrdnja "Ako je broj djeljiv sa 10, onda je djeljiv sa 3" je netačna jer lažan zaključak se izvodi iz istinite premise.

"Ovaj četvorougao je kvadrat" (A) I "Kružnica se može opisati oko datog četvorougla" (IN). Tada složeni iskaz glasi kao “Ako je dati četverougao kvadrat, onda se oko njega može nacrtati krug.”

U običnom govoru veznik "ako... onda" opisuje uzročno-posledični odnos između izjava. Ali u logičkim operacijama značenje iskaza se ne uzima u obzir. Razmatra se samo njihova istina ili laž. Stoga se ne treba sramiti „besmislenost“ implikacija koje formiraju iskazi koji su sadržajno potpuno nepovezani. Na primjer, ovako: "ako je predsjednik Sjedinjenih Država demokrata, onda u Africi postoje žirafe", "ako je lubenica bobica, onda ima benzina na benzinskoj pumpi."

6. Ekvivalencija (logička jednakost, ~ º Û) se formira spajanjem dva iskaza u jedan koristeći govornu figuru “...ako i samo ako...”

Složeni iskaz formiran operacijom ekvivalencije je istinit ako i samo ako su oba iskaza istovremeno ili lažna ili tačna.

Na primjer, izjave “Računar može računati ako i samo ako je uključen” i “Računar ne može računati ako i samo ako nije uključen” su tačni jer su obje jednostavne izjave istovremeno tačne.


Tablice istine

Za svaki složeni iskaz (logička funkcija) moguće je konstruirati tablicu istinitosti koja određuje njegovu istinitost ili netočnost za sve moguće kombinacije početnih vrijednosti jednostavnih iskaza.

Tabela istine ovo je prikaz tabele logičko kolo(operacije), koji navodi sve moguće kombinacije istinitih vrijednosti ulaznih signala (operanada) zajedno sa istinitom vrijednošću izlaznog signala (rezultata operacije) za svaku od ovih kombinacija.

Hajde da odrazimo gore navedeno logičke operacije u tabeli istine:

U propozicionoj algebri, sve logičke funkcije logičkim transformacijama mogu se svesti na tri osnovne: logičko sabiranje, logičko množenje i logičku negaciju.

Dokažimo da je operacija implikacije A®B ekvivalentna logičkom izrazu:

Operacija ekskluzivno ILI (neekvivalentnost, zbrajanje po modulu dva) označava se simbolom i razlikuje se od logičkog ILI samo kada je A=1 i B=1.

Dakle, disparitet dva iskaza X1 i X2 naziva se izjava Y koja je tačna ako i samo ako je jedan od ovih iskaza tačan, a drugi netačan.

Definicija ove operacije može se napisati u obliku tablice istinitosti (tabela 6):

Tabela 6 – Tabela istinitosti operacije “ISKLJUČUVO ILI”.

Kao što se može vidjeti iz tabele 6, logika rada elementa odgovara njegovom imenu.

Ovo je isti element „ILI“ sa jednom malom razlikom. Ako je vrijednost na oba ulaza jednaka logičkoj, onda izlaz elementa “ISKLJUČUVO ILI” za razliku od elementa “ILI” nije jedan, već nula.

Operacija EXCLUSIVE OR zapravo uspoređuje dvije binarne znamenke za podudaranje.

Svaka logička konekcija se smatra operacijom nad logičkim iskazima i ima svoje ime i oznaku (Tablica 7).

Tabela 7 - Osnovne logičke operacije

Oznaka

operacije

Čitanje

Naziv operacije

Alternativne oznake

negacija (inverzija)

Linija na vrhu

Konjunkcija (logičko množenje)

Disjunkcija (logički dodatak)

Ako... onda

Implikacije

Tada i samo tada

Ekvivalencija

Ili...ili

EKSKLUZIVNO ILI (dodatak po modulu 2)

  1. Redoslijed logičkih operacija u složenom logičkom izrazu

Sistem logičkih operacija inverzije, konjunkcije i disjunkcije omogućava vam da konstruišete proizvoljno složene logički izraz.

Prilikom izračunavanja vrijednosti logičkog izraza usvaja se određeni red logičkih operacija.

1. Inverzija.

2. Veznik.

3. Disjunkcija.

4. Implikacije.

5. Ekvivalencija.

Zagrade se koriste za promjenu specificiranog redoslijeda operacija.

  1. Logički izrazi i tabele istinitosti

    1. Boolean izrazi

Svaki složeni iskaz može se izraziti u obliku formule (logičkog izraza), koja uključuje logičke varijable, koji označavaju izjave, i znakovi logičkih operacija, označavaju logičke funkcije.

Za pisanje složenog iskaza u obliku logičkog izraza na formalnom jeziku (jeziku algebre logike), u složenom iskazu potrebno je identificirati jednostavne iskaze i logičke veze između njih.

Zapišimo u obliku logičkog izraza složeni iskaz „(2·2=5 ili 2∙2=4) i (2∙2≠5 ili 2∙ 2 4)".

Hajde da analiziramo složeni iskaz. Sadrži dvije jednostavne izjave:

A = “2 2=5” - netačno (0),

B = “2 2=4” - tačno (1).

Tada se složeni iskaz može napisati u sljedećem obliku:

«( AiliIN) i (Ā iliIN)».

Sada morate napisati izjavu u obliku logičkog izraza, uzimajući u obzir slijed logičkih operacija. Prilikom izvođenja logičkih operacija definira se sljedeći redoslijed njihovog izvršavanja:

inverzija, konjunkcija, disjunkcija.

Zagrade se mogu koristiti za promjenu navedenog redoslijeda:

F = (AvIN) & (Ā vIN).

Istinitost ili netačnost složenih iskaza može se utvrditi čisto formalno, rukovodeći se zakonima propozicione algebre, bez pozivanja na semantički sadržaj iskaza.

Zamijenimo vrijednosti logičkih varijabli u logički izraz i, koristeći tablice istinitosti osnovnih logičkih operacija, dobijemo vrijednost logičke funkcije:

F= (A v B) & ( Ā v B) = (0 v 1) & (1 v 0) = 1 & 1 = 1.

      Tablice istine

Tablice u kojima logičke operacije odražavaju rezultate izračunavanja složenih iskaza za različite vrijednosti originalnih jednostavnih iskaza nazivaju se tablice istinitosti.

Jednostavni iskazi su označeni varijablama (na primjer, A i B).

Prilikom konstruiranja tablica istine, preporučljivo je voditi se određenim slijedom radnji:

    potrebno je odrediti broj redova u tabeli istinitosti. Ona je jednaka količini moguće kombinacije vrijednosti logičkih varijabli uključenih u logički izraz. Ako je broj logičkih varijabli jednak p, to:

broj redova = 2 n .

U našem slučaju, logička funkcija

ima 2 varijable i stoga broj redova u tabeli istinitosti mora biti 4;

    potrebno je odrediti broj kolona u tabeli istinitosti, koji je jednak broju logičkih varijabli plus broju logičkih operacija.

U našem slučaju, broj varijabli je dva: A i B, a broj logičkih operacija je pet (tabela 8), odnosno broj kolona u tabeli istinitosti je sedam;

    potrebno je izgraditi tabelu istinitosti sa navedenim brojem redova i stupaca, označiti stupce i unijeti u tablicu moguće skupove vrijednosti originalnih logičkih varijabli;

    potrebno je popuniti tabelu istinitosti po kolonama, izvodeći osnovne logičke operacije u traženom redosledu iu skladu sa njihovim tabelama istinitosti.

Sada možemo odrediti vrijednost Bulove funkcije za bilo koji skup vrijednosti Boolean varijabli.

Tablica 8 – Tabela istinitosti logičke funkcije

© 2024 ermake.ru -- O popravci računara - Informativni portal