Ekskluzivno ili u c. Primjer rješavanja problema XOR - isključivi OR. Primjeri korištenja operacija posmaka u programu

Najjednostavnije logičke operacije

Najjednostavnije logičke operacije pripadaju dvoznačnoj logici. Ima ih 4: "NE", "I", "ILI", "XOR". Također, različiti simboli ("~", "&", itd.) koriste se za označavanje ovih operacija.

Pri pisanju logičkih formula umjesto riječi "točno" i "netočno" obično se koriste standardne međunarodne oznake:
Umjesto "istina" pišu: istina, T, t, 1.
Umjesto "false" pišu: false, F, f, 0.

"NE"

Operacija “NOT” pretvara true u false i false u true:

NIJE točno = netočno
NIJE lažno = istinito

Ova operacija ima razne druge nazive: “logičko NE”, “negacija”, “logička negacija”, “inverzija”, “logička inverzija”. Za međunarodne oznake umjesto "NE" piše se "NE".

U prirodnom jeziku, ova operacija odgovara dodavanju riječi "nije istina da..." na početku iskaza. Na primjer:

Primjena operacije "NE" na izjavu (1):

"Nije istina da mi Surkov duguje novac." (2)

Ako je izjava (1) netočna, onda je izjava (2) istinita. Ako je izjava (2) netočna, onda je izjava (1) istinita.

Nije teško shvatiti da nas dvostruka upotreba “NE” vraća na prethodnu istinu.

"Nije istina, nije istina da mi Surkov duguje novac." (3)

Istinitost tvrdnje (3) uvijek se podudara s istinitošću tvrdnje (1).

"I"

Operacija AND primjenjuje se na dvije izjave. Njegov rezultat je "istinit" samo ako su obje izjave istinite (inače "netočne"):

lažno I lažno = lažno
lažno I istinito = lažno
istina i laž = laž
istina I istina = istina

Ova operacija ima i druga imena: “logičko I”, “konjunkcija”, “logičko množenje”. Za međunarodne oznake umjesto "I" pišu "I".

U prirodnom jeziku, ova operacija odgovara umetanju veznika "i" između iskaza. Na primjer:

"Surkov mi duguje novac." (1)
“Petrov mi duguje novac.” (2)

Primjenom operacije "I" na izjave (1) i (2):

"Surkov mi duguje novac, a Petrov mi duguje novac." (3)

Ovaj se izraz može skratiti uz zadržavanje istog značenja:

“Surkov i Petrov duguju mi ​​novac.” (3)

Tvrdnja (3) je istinita samo ako su obje tvrdnje (1) i (2) istinite. Ako je barem jedan od njih lažan, tada je i rezultat lažan. Ako su oba lažna, lažna su i ona.

Odnosno, ako mi Petrov nije dugovao novac, nego samo Surkov, tada izjava (3) neće biti “poluistina” ili “polulaž”, već će jednostavno biti laž.

"ILI"

Operacija OR primjenjuje se na dvije izjave. Njegov rezultat je "istinit" ako je barem jedna tvrdnja istinita (inače "netočna"):

lažno ILI lažno = lažno
lažno ILI istinito = istinito
točno ILI lažno = točno
istina ILI istina = istina

Ova operacija ima razne druge nazive: “logičko ILI”, “uključivo ILI”, “disjunkcija”, “logičko zbrajanje”. Za međunarodne oznake umjesto "ILI" napišite "ILI".
U prirodnom jeziku, ova operacija odgovara umetanju veznika “ili” između iskaza, ali... ne uvijek (vidi dolje o operaciji “XOR”). Na primjer:

“Želim nešto popiti.” (1)
"Želim jesti." (2)

Primjenom operacije OR na izjave (1) i (2):

"Želim piti, ili želim jesti." (3)

Na ruskom zvuči ispravno, ali nespretno, a ovaj se izraz može skratiti, zadržavajući isto značenje:

"Želim piti ili jesti." (3)

Tvrdnja (3) je istinita kada je barem jedna od tvrdnji (1) i (2) istinita ili su obje moguće. Ako su obje tvrdnje netočne, tada je i rezultat netočan.

Odnosno, ako sam gladan, ali ne i žedan, tada je izjava (3) istinita. Ako nisam nesklon i jelu i piću, izjava (3) je također istinita. Lažno je kad ne želim ni jedno ni drugo.

"XOR"

Operacija XOR primjenjuje se na dvije izjave. Njegov rezultat je "istinit" ako je točno jedna od izjava istinita (inače "netočna"):

lažno XOR lažno = lažno
false XOR true = true
točno XOR lažno = točno
true XOR true = false

Ova operacija ima razne druge nazive: "isključivo ILI", "zbrajanje modulo 2", "logičko zbrajanje modulo 2". "XOR" je međunarodna oznaka; ne postoji općeprihvaćeni "ruski" analog.

U prirodnom jeziku, ova operacija odgovara umetanju veznika "ili" između iskaza - baš kao u slučaju operacije "ILI". Na primjer:

“Tražit ću povišicu.” (1)
"Pokušat ću uštedjeti novac." (2)

Primjenom operacije "XOR" na izjave (1) i (2):

"Tražit ću povišicu ili ću pokušati uštedjeti novac." (3)

Skraćeno:

"Tražit ću povišicu ili ću pokušati uštedjeti novac." (3)

Tvrdnja (3) je istinita ako je točno jedna od tvrdnji (1) i (2). Ako neću tražiti povišicu ili štedjeti, onda je izraz lažan. Također, mislio sam da neću raditi oboje u isto vrijeme.

Obratite pozornost na razliku između operacija OR i XOR. Sastoji se samo od posljednjeg pravila:

istina ILI istina = istina
true XOR true = false

U prirodnom jeziku obje su operacije predstavljene istim veznikom "ili". Ovo je primjer višeznačnosti u prirodnom jeziku. Ako se sjećate, homonimi i dvosmislene riječi mogu imati više od jednog značenja. Veznik "ili" je upravo to: ima dva moguća značenja. Prvi se izražava logičkom operacijom "ILI", drugi - logičkom operacijom "XOR".

U engleskom jeziku postoje isti problemi: veznik “ili” ima ista dva značenja. Ali starim Rimljanima je bilo lakše, jer u latinskom postoje dvije različite riječi: “vel” (operacija OR) i “aut” (operacija XOR).

Budući da je razlika između OR i XOR mala (samo posljednje pravilo), ponekad razlika nije bitna. Ponekad možete pogoditi što se misli pod intonacijom ili kontekstom. Ponekad nije moguće odrediti točno značenje.

U ovom ćemo članku govoriti o nekim operacijama s bitovima. Pogledajmo glavne: XOR (isključivo ILI), I, NE i ILI.

Kao što je poznato, minimalna jedinica mjerenja informacija je malo, koji pohranjuje jednu od 2 vrijednosti: 0 ( lažno, lažno) ili 1 ( Pravi, istina). Dakle, bitna ćelija može biti samo u jednom od dva moguća stanja istovremeno.

Za manipuliranje bitovima koriste se određene operacije - logički ili booleovski. Mogu se primijeniti na bilo koji bit, bez obzira je li njegova vrijednost nula ili jedan. Pa, pogledajmo primjere korištenja tri osnovne logičke operacije.

Logička operacija I (i)

I označen sa &.

Operator AND se izvodi na 2 bita, uzmimo za primjer a i b. Rezultat operacije AND je 1 ako su a i b jednaki 1. U suprotnom, rezultat je 0. Na primjer, pomoću AND možete saznati je li broj paran ili ne.

Pogledajte tablicu istinitosti operacije AND:

Logička operacija ILI (ILI)

Označeno | .

Operater ILI također učinjeno s 2 bita (a i b). Rezultat je 0 ako su a i b 0, inače je 1. Pogledajte tablicu istine.

Logička operacija XOR (isključivo OR)

XOR operator je označen sa ^.

XOR izvodi se s 2 bita (a i b). Rezultat operacije XOR ( isključivi ILI) je 1 kada je jedan od bitova b ili a 1. U suprotnom, rezultat primjene XOR operatora je 0.

Tablica istinitosti logičke operacije za XOR (isključivo OR) izgleda ovako:

Koristeći XOR (isključivi OR), možete promijeniti vrijednosti 2 varijable iste vrste podataka bez korištenja privremene varijable. Također možete šifrirati tekst koristeći XOR, na primjer:

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

Slažem se da je XOR daleko od najpouzdanije metode šifriranja, ali to ne znači da ne može biti dio bilo kojeg algoritma šifriranja.

Logička operacija NE (NE)

Ovo je negacija po bitovima, pa se izvodi s jednim bitom i označava se s ~ .

Rezultat ovisi o stanju bita. Ako je u nultom stanju, tada je rezultat operacije jedan i obrnuto. Sve je krajnje jednostavno.

Ove 4 logičke operacije treba prvo zapamtiti, jer uz njihovu pomoć možete dobiti gotovo sve moguće rezultate. Postoje i operacije kao npr<< (побитовый сдвиг влево) и >> (bitni pomak udesno).


Operater Sintaksa Opis
I A I B Konjunkcija: Ako su A i B Istina, onda je Istina. Inače - False
ILI A ILI B Disjunkcija: Ako je bilo koji od operanda True, tada je True. Inače - False
NE NE A Negacija: Ako je A False, onda je True. Inače - False
XOR A XOR B Iznimka: Ako je A Istina ili B je Istina, onda - Istina. Inače - False
EQV A EQV B Ekvivalencija: Ako A ima istu vrijednost kao B, onda je True. Inače - False
IMP A IMP B Implikacija: Ako je A točno, a B netočno, tada je netočno. Inače – Istina

Operand za Boolean operator može biti bilo koji važeći izraz koji ima Boolean rezultat, kao i broj koji se može pretvoriti u Boolean vrijednost.

Rezultat logičke operacije je vrijednost tipa Boolean (ili Null ako je barem jedan od operanda Null).

Logički operator AND

Sintaksa:
Operand_1 I Operand_2


Operator AND izvodi logička konjunkcija.

Rezultat ove operacije je True samo kada su oba operanda True, inače False.


Tablica istine


Operator AND može se koristiti za više operanda:


(5 3) I (5=6) rezultat će biti False


Bez obzira na broj operanda, rezultat logičke operacije AND bit će True samo ako svi operandi izraza imaju vrijednost True. U svakom drugom slučaju rezultat će biti False. Imajte na umu da su operandi zatvoreni u zagrade. VBA prvo procjenjuje vrijednost svakog operanda unutar zagrada, a zatim cijeli izraz.

Logički operator ILI

Sintaksa:
Operand_1 ILI Operand_2


Operator OR radi logička disjunkcija.

Rezultat ove operacije je True ako je barem jedan od operanda True, inače je False.


Tablica istine


Operator OR može se koristiti za više operanda:


(5 3) ILI (5=6) rezultat će biti Istina


Bez obzira na broj operanda, rezultat logičke operacije ILI uvijek će biti True ako je barem jedan od operanda izraza True. Inače će rezultat biti False.

Operatori AND i OR mogu se kombinirati:


((5 3)) ILI (5=6) rezultat će biti True

Logički operator NE

Sintaksa:
NIJE operand


Operator NOT radi logična negacija.

Operator NOT koristi samo jedan operand.


Tablica istine


Operatori I ILI NE mogu se kombinirati:


((5 3)) ILI NE (5=6) rezultat će biti Istina

Logički operator XOR

Sintaksa:
Operand_1 XOR operand_2


Operator XOR radi logična iznimka.

Rezultat ove operacije je True ako operandi imaju različite vrijednosti, inače je False.


Tablica istine


((5 3)) ILI NE (5=6) XOR (5=5) rezultat će biti False

Logički operator EQV

Sintaksa:
Operand_1 EQV Operand_2


Operator EQV je operator logička ekvivalencija.

Rezultat ove operacije je True ako operandi imaju iste vrijednosti, inače je False.


Tablica istine


((5 3)) ILI NE (5=6) EQV (5=5) rezultat će biti Istina

Logički operator IMP

Sintaksa:
Operand_1 IMP Operand_2


IMP operator izvodi logičku operaciju implikacije.


Tablica istine


((5 3)) ILI NE (5=6) IMP (5=5) rezultat će biti Istina


IMP logički operator najmanje je intuitivan od svih logičkih operatora. Srećom, potreba za njegovom upotrebom javlja se prilično rijetko.

Operacija isključivi ILI (neekvivalencija, zbrajanje modulo dva) označava se simbolom i razlikuje se od logičkog ILI samo kada je A=1 i B=1.

Dakle, disparitet dviju izjava X1 i X2 naziva se izjava Y koja je istinita ako i samo ako je jedna od ovih izjava istinita, a druga netočna.

Definicija ove operacije može se napisati u obliku tablice istine (tablica 6):

Tablica 6 – Tablica istinitosti operacije “ISKLJUČIVO ILI”.

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

Ovo je isti element "ILI" s jednom malom razlikom. Ako je vrijednost na oba ulaza jednaka logičkoj jedinici, tada izlaz elementa "ISKLJUČIVO ILI", za razliku od elementa "ILI", nije jedinica, već nula.

Operacija EXCLUSIVE OR zapravo uspoređuje dvije binarne znamenke radi podudaranja.

Svaki logički veznik smatra se operacijom nad logičkim iskazima i ima svoje ime i oznaku (tablica 7).

Tablica 7 - Osnovne logičke operacije

Oznaka

operacije

Čitanje

Naziv operacije

Alternativne oznake

Negacija (inverzija)

Linija na vrhu

Konjunkcija (logičko množenje)

Disjunkcija (logičko zbrajanje)

Ako... onda

implikacija

Tada i samo tada

Ekvivalencija

Ili...ili

ISKLJUČIVO ILI (zbrajanje modulo 2)

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

Sustav logičkih operacija inverzije, konjunkcije i disjunkcije omogućuje konstruiranje proizvoljno složenog logičkog izraza.

Pri izračunavanju vrijednosti logičkog izraza izvodi se određeni redoslijed logičkih operacija.

1. Inverzija.

2. veznik.

3. Disjunkcija.

4. Implikacija.

5. Ekvivalencija.

Zagrade se koriste za promjenu navedenog redoslijeda operacija.

  1. Logički izrazi i tablice istinitosti

    1. Booleovi izrazi

Svaka složena izjava može se izraziti u obliku formule (logičkog izraza), koja uključuje logičke varijable, označavanje izjava, i znakovi logičkih operacija, označavajući logičke funkcije.

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

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)".

Analizirajmo složeni iskaz. Sadrži dvije jednostavne izjave:

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

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

Tada se složena izjava može napisati u sljedećem obliku:

«( AiliU) i (Ā iliU)».

Sada morate napisati izjavu u obliku logičkog izraza, vodeći računa o redoslijedu logičkih operacija. Prilikom izvođenja logičkih operacija definiran je sljedeći redoslijed njihovog izvođenja:

inverzija, konjunkcija, disjunkcija.

Zagrade se mogu koristiti za promjenu navedenog redoslijeda:

F = (AvU) & (Ā vU).

Istinitost ili lažnost složenih iskaza može se odrediti čisto formalno, vođeni zakonima propozicijske algebre, bez pozivanja na semantički sadržaj iskaza.

Zamijenimo vrijednosti logičkih varijabli u logički izraz i pomoću tablica istinitosti osnovnih logičkih operacija dobivamo 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čuna složenih izjava za različite vrijednosti izvornih jednostavnih izjava nazivaju se tablicama istine.

Jednostavni iskazi se označavaju varijablama (na primjer, A i B).

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

    potrebno je odrediti broj redaka u tablici istinitosti. Jednak je broju mogućih kombinacija vrijednosti logičke varijable uključenih u logički izraz. Ako je broj logičkih varijabli jednak p, Da:

broj linija = 2 n .

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

ima 2 varijable i stoga broj redaka u tablici istine mora biti 4;

    potrebno je odrediti broj stupaca u tablici istinitosti koji je jednak broju logičkih varijabli plus broj logičkih operacija.

U našem slučaju broj varijabli je dvije: A i B, a broj logičkih operacija je pet (tablica 8), odnosno broj stupaca tablice istine je sedam;

    potrebno je izgraditi tablicu istinitosti s navedenim brojem redaka i stupaca, označiti stupce i u tablicu unijeti moguće skupove vrijednosti izvornih logičkih varijabli;

    potrebno je popuniti tablicu istinitosti po stupcima, izvodeći osnovne logičke operacije u traženom redoslijedu iu skladu s njihovim tablicama istinitosti.

Sada možemo odrediti vrijednost Booleove funkcije za bilo koji skup vrijednosti Booleove varijable.

Tablica 8 – Tablica istinitosti logičke funkcije

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

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

Ova se operacija često uspoređuje s disjunkcijom jer su vrlo slične po svojstvima, a obje imaju sličnosti s veznikom "ili" u svakodnevnom govoru. Usporedite 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 zbog toga se naziva isključivi “ILI”. Dvosmislenost prirodni jezik je da se veznik “ili” može koristiti u oba slučaja.

5. Implikacija (logična posljedica) nastaje spajanjem dviju izjava u jednu pomoću govorne figure “ako ... onda ....”.

Snimanje: A®B

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

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

Na primjer, izjava "Ako je broj djeljiv s 10, onda je djeljiv s 5" je istinita jer i prva i druga tvrdnja su istinite.

Izjava "Ako je broj djeljiv s 10, onda je djeljiv s 3" je netočna jer iz istinite premise izvodi se pogrešan zaključak.

"Ovaj četverokut je kvadrat" (A) I "Kružnica se može opisati oko danog četverokuta" (U). Tada složeni iskaz glasi kao "Ako je dati četverokut kvadrat, onda se oko njega može nacrtati krug."

U običnom govoru veznik "ako... onda" opisuje uzročno-posljedičnu vezu između izjava. Ali u logičkim operacijama značenje iskaza se ne uzima u obzir. Razmatra se samo njihova istinitost ili neistinitost. Stoga se ne treba stidjeti “besmislenosti” implikacija koje tvore sadržajno potpuno nepovezane izjave. Na primjer, ovako: “ako je predsjednik SAD-a demokrat, onda u Africi ima žirafa”, “ako je lubenica bobičasto voće, onda ima benzina na benzinskoj postaji.”

6. Ekvivalencija (logička jednakost, ~ º Û) nastaje kombiniranjem dviju izjava u jednu pomoću govorne figure “...ako i samo ako...”

Složeni iskaz formiran operacijom ekvivalencije istinit je ako i samo ako su oba iskaza istodobno lažna ili istinita.

Na primjer, izjave "Računalo može računati ako i samo ako je uključeno" i "Računalo ne može računati ako i samo ako nije uključeno" su istinite jer su obje jednostavne izjave istovremeno istinite.


Tablice istine

Za svaku složenu izjavu (logičku funkciju) moguće je konstruirati tablicu istinitosti koja određuje njezinu istinitost ili netočnost za sve moguće kombinacije početnih vrijednosti jednostavnih izjava.

Tablica istine je tablični prikaz logičkog sklopa (operacije) koji navodi sve moguće kombinacije istinitih vrijednosti ulaznih signala (operanda) zajedno s istinitom vrijednošću izlaznog signala (rezultat operacije) za svaku od tih kombinacija.

Odrazimo logičke operacije o kojima smo gore govorili u tablici istine:

U iskaznoj algebri sve se logičke funkcije logičkim transformacijama mogu svesti na tri osnovne: logičko zbrajanje, logičko množenje i logička negacija.

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