Exclusief of in c. Een voorbeeld van het oplossen van het XOR-probleem: exclusieve OR. Voorbeelden van het gebruik van ploegendiensten in een programma

De eenvoudigste logische bewerkingen

De eenvoudigste logische bewerkingen behoren tot logica met twee waarden. Er zijn er 4: "NIET", "EN", "OF", "XOR". Er worden ook verschillende symbolen (“~”, “&”, enz.) gebruikt om deze bewerkingen aan te duiden.

Bij het schrijven van logische formules worden gewoonlijk standaard internationale notaties gebruikt in plaats van de woorden "waar" en "onwaar":
In plaats van ‘waar’ schrijven ze: waar, T, t, 1.
In plaats van “false” schrijven ze: false, F, f, 0.

"NIET"

De bewerking "NOT" converteert waar naar onwaar en onwaar naar waar:

NIET waar = onwaar
NIET onwaar = waar

Deze bewerking heeft verschillende andere namen: “logische NOT”, “negatie”, “logische negatie”, “inversie”, “logische inversie”. Voor internationale aanduidingen wordt “NOT” geschreven in plaats van “NOT”.

In natuurlijke taal komt deze bewerking overeen met het toevoegen van de woorden "het is niet waar dat..." aan het begin van de verklaring. Bijvoorbeeld:

De bewerking “NOT” toepassen op de verklaring (1):

‘Het is niet waar dat Soerkov mij geld schuldig is.’ (2)

Als uitspraak (1) onwaar is, dan is uitspraak (2) waar. Als uitspraak (2) onwaar is, dan is uitspraak (1) waar.

Het is niet moeilijk te begrijpen dat het dubbele gebruik van “NIET” ons terugbrengt naar de vorige waarheid.

‘Het is niet waar, het is niet waar dat Soerkov mij geld schuldig is.’ (3)

De waarheid van bewering (3) valt altijd samen met de waarheid van bewering (1).

"EN"

De AND-bewerking wordt op twee instructies toegepast. Het resultaat is alleen ‘waar’ als beide beweringen waar zijn (anders ‘onwaar’):

onwaar EN onwaar = onwaar
onwaar EN waar = onwaar
waar en onwaar = onwaar
waar EN waar = waar

Deze bewerking heeft verschillende andere namen: “logisch EN”, “conjunctie”, “logische vermenigvuldiging”. Voor internationale aanduidingen wordt in plaats van “I” “AND” geschreven.

In natuurlijke taal komt deze bewerking overeen met het invoegen van het voegwoord “en” tussen uitspraken. Bijvoorbeeld:

‘Soerkov is mij geld schuldig.’ (1)
‘Petrov is mij geld schuldig.’ (2)

De “AND”-bewerking toepassen op uitspraken (1) en (2):

‘Soerkov is mij geld schuldig, en Petrov is mij geld schuldig.’ (3)

Deze zin kan worden ingekort met behoud van dezelfde betekenis:

‘Soerkov en Petrov zijn mij geld schuldig.’ (3)

Bewering (3) is alleen waar als zowel beweringen (1) als (2) waar zijn. Als ten minste één ervan onwaar is, is het resultaat ook onwaar. Als beide onwaar zijn, zijn zij dat ook.

Dat wil zeggen, als Petrov mij geen geld schuldig was, maar alleen Surkov, dan zal verklaring (3) geen “halve waarheid” of “halve leugen” zijn, maar eenvoudigweg een leugen.

"OF"

De OR-bewerking wordt op twee instructies toegepast. Het resultaat is ‘waar’ als ten minste één bewering waar is (anders ‘onwaar’):

onwaar OF onwaar = onwaar
onwaar OF waar = waar
waar OF onwaar = waar
waar OF waar = waar

Deze bewerking heeft verschillende andere namen: “logische OR”, “inclusief OR”, “disjunctie”, “logische optelling”. Voor internationale aanduidingen schrijft u in plaats van “OR” “OR”.
In natuurlijke taal komt deze bewerking overeen met het invoegen van het voegwoord “of” tussen uitspraken, maar... niet altijd (zie hieronder over de “XOR”-bewerking). Bijvoorbeeld:

“Ik wil iets drinken.” (1)
‘Ik wil eten.’ (2)

De OR-bewerking toepassen op uitspraken (1) en (2):

“Ik wil drinken, of ik wil eten.” (3)

In het Russisch klinkt het correct, maar onhandig, en deze zin kan worden ingekort, waarbij dezelfde betekenis behouden blijft:

“Ik wil drinken of eten.” (3)

Bewering (3) is waar als ten minste één van de uitspraken (1) en (2) waar is, of beide mogelijk zijn. Als beide uitspraken onwaar zijn, is het resultaat ook onwaar.

Dat wil zeggen: als ik honger heb maar geen dorst, dan is bewering (3) waar. Als ik niet vies ben van zowel eten als drinken, is uitspraak (3) ook waar. Het is onwaar als ik noch het een noch het ander wil.

"XOR"

De XOR-bewerking wordt toegepast op twee instructies. Het resultaat is ‘waar’ als precies één van de beweringen waar is (anders ‘onwaar’):

onwaar XOR onwaar = onwaar
onwaar XOR waar = waar
waar XOR onwaar = waar
waar XOR waar = onwaar

Deze bewerking heeft verschillende andere namen: “exclusieve OR”, “optelling modulo 2”, “logische optelling modulo 2”. "XOR" is een internationale aanduiding; er is geen algemeen aanvaarde "Russische" analoog.

In natuurlijke taal komt deze operatie overeen met het invoegen van het voegwoord “of” tussen uitspraken - net zoals in het geval van de “OR”-operatie. Bijvoorbeeld:

“Ik ga om loonsverhoging vragen.” (1)
“Ik zal proberen geld te besparen.” (2)

De “XOR”-bewerking toepassen op uitspraken (1) en (2):

"Ik ga om loonsverhoging vragen of ik ga proberen geld te besparen." (3)

Afgekort:

"Ik ga om loonsverhoging vragen of proberen geld te besparen." (3)

Bewering (3) is waar als precies één van de uitspraken (1) en (2) waar is. Als ik niet om opslag of opslag ga vragen, is deze zin onjuist. Ik bedoelde ook dat ik het niet allebei tegelijk ga doen.

Let op het verschil tussen de OR- en XOR-bewerkingen. Het bestaat alleen uit de laatste regel:

waar OF waar = waar
waar XOR waar = onwaar

In natuurlijke taal worden beide bewerkingen weergegeven door hetzelfde voegwoord “of”. Dit is een voorbeeld van dubbelzinnigheid in natuurlijke taal. Weet je nog, homoniemen en dubbelzinnige woorden kunnen meer dan één betekenis hebben. Het voegwoord ‘of’ is precies dat: het heeft twee mogelijke betekenissen. De eerste wordt uitgedrukt door de logische operatie “OR”, de tweede – door de logische operatie “XOR”.

In het Engels bestaan ​​dezelfde problemen: het voegwoord ‘of’ heeft dezelfde twee betekenissen. Maar voor de oude Romeinen was het gemakkelijker, omdat er in het Latijn twee verschillende woorden zijn: "vel" (OR-operatie) en "aut" (XOR-operatie).

Omdat het verschil tussen OR en XOR klein is (slechts één laatste regel), doet het verschil er soms niet toe. Soms kun je raden wat er met intonatie of context wordt bedoeld. Soms is het niet mogelijk om de exacte betekenis te bepalen.

In dit artikel zullen we het hebben over enkele bitbewerkingen. Laten we naar de belangrijkste kijken: XOR (exclusief OR), AND, NOT en OR.

Zoals bekend is de minimale meeteenheid van informatie beetje, waarin een van de twee waarden wordt opgeslagen: 0 ( Vals, onwaar) of 1 ( WAAR, WAAR). Een bitcel kan zich dus slechts in één van de twee mogelijke toestanden tegelijk bevinden.

Om bits te manipuleren, worden bepaalde bewerkingen gebruikt - logisch of booleaans. Ze kunnen op elk bit worden toegepast, ongeacht of de waarde nul of één is. Laten we eens kijken naar voorbeelden van het gebruik van drie logische basisbewerkingen.

Logische werking AND (en)

EN aangegeven met &.

De AND-operator wordt uitgevoerd op 2 bits, laten we bijvoorbeeld a en b nemen. Het resultaat van de AND-bewerking is 1 als a en b gelijk zijn aan 1. Anders is het resultaat 0. Met AND kunt u bijvoorbeeld achterhalen of een getal even is of niet.

Kijk naar de waarheidstabel van de AND-bewerking:

Logische werking OF (OR)

Aangegeven door | .

Exploitant OF ook gedaan met 2 bits (a en b). Het resultaat is 0 als a en b 0 zijn, anders is het 1. Kijk naar de waarheidstabel.

Logische bediening XOR (exclusief OR)

De XOR-operator wordt aangegeven met ^.

XOR uitgevoerd met 2 bits (a en b). Het resultaat van de XOR-operatie ( exclusief OF) is 1 wanneer een van de bits b of a 1 is. Anders is het resultaat van het toepassen van de XOR-operator 0.

De waarheidstabel voor logische bewerkingen voor XOR (exclusieve OR) ziet er als volgt uit:

Met XOR (exclusieve OR) kunt u de waarden van 2 variabelen van hetzelfde gegevenstype wijzigen zonder een tijdelijke variabele te gebruiken. U kunt tekst ook coderen met XOR, bijvoorbeeld:

String msg = "Dit is een bericht"; char bericht = msg.toCharArray(); Tekenreekssleutel = ".*)"; Tekenreeks gecodeerdString = nieuwe String(); voor(int i = 0; ik< message.length; i++){ encryptedString += message[i]^key.toCharArray(); }

Ik ben het ermee eens dat XOR verre van de meest betrouwbare versleutelingsmethode is, maar dit betekent niet dat het geen onderdeel kan zijn van welk versleutelingsalgoritme dan ook.

Logische werking NIET (NIET)

Dit is een bitsgewijze negatie, dus wordt uitgevoerd met één bit en wordt aangegeven met ~.

Het resultaat is afhankelijk van de staat van de bit. Als het zich in de nultoestand bevindt, is het resultaat van de bewerking één en omgekeerd. Alles is uiterst eenvoudig.

Deze 4 logische bewerkingen moeten eerst worden onthouden, omdat u met hun hulp vrijwel elk mogelijk resultaat kunt krijgen. Er zijn ook operaties zoals<< (побитовый сдвиг влево) и >> (bitsgewijze verschuiving naar rechts).


Exploitant Syntaxis Beschrijving
EN A EN B Voegwoord: Als A en B waar zijn, dan is het waar. Anders - Onwaar
OF A OF B Disjunctie: Als een van de operanden True is, dan True. Anders - Onwaar
NIET NIET A Negatie: Als A onwaar is, dan is het waar. Anders - Onwaar
XOR Een XOR B Uitzondering: Als A waar is of B waar is, dan - Waar. Anders - Onwaar
EQV Een EQV B Gelijkwaardigheid: Als A dezelfde waarde heeft als B, dan is het Waar. Anders - Onwaar
IMP Een IMP B Implicatie: Als A waar is en B onwaar, dan is het onwaar. Anders - waar

De operand voor een Booleaanse operator kan elke geldige uitdrukking zijn die een Booleaans resultaat heeft, maar ook een getal dat kan worden geconverteerd naar een Booleaanse waarde.

Het resultaat van een logische bewerking is een waarde van het type Boolean (of Null als ten minste één van de operanden Null is).

Logische operator AND

Syntaxis:
Operand_1 EN Operand_2


De AND-operator voert uit logische combinatie.

Het resultaat van deze bewerking is alleen True als beide operanden True zijn, anders False.


Waarheid tafel


De AND-operator kan voor meerdere operanden worden gebruikt:


(5 3) EN (5=6) het resultaat zal False zijn


Ongeacht het aantal operanden zal het resultaat van de logische AND-bewerking alleen True zijn als alle operanden van de expressie True opleveren. In elk ander geval zal het resultaat False zijn. Merk op dat de operanden tussen haakjes staan. VBA evalueert eerst de waarde van elke operand tussen de haakjes, en vervolgens van de gehele expressie.

Logische operator OR

Syntaxis:
Operand_1 OF Operand_2


De OR-operator doet dat wel logische disjunctie.

Het resultaat van deze bewerking is True als ten minste één van de operanden True is, anders False.


Waarheid tafel


De OR-operator kan voor meerdere operanden worden gebruikt:


(5 3) OF (5=6) het resultaat is Waar


Ongeacht het aantal operanden zal het resultaat van de logische OR-bewerking altijd True zijn als ten minste één van de operanden van de expressie True is. Anders is het resultaat False.

De AND- en OR-operatoren kunnen worden gecombineerd:


((5 3)) OF (5=6) het resultaat is Waar

Logische operator NIET

Syntaxis:
NIET Operande


De NOT-operator doet dat wel logische ontkenning.

De NOT-operator gebruikt slechts één operand.


Waarheid tafel


AND OR NOT-operatoren kunnen worden gecombineerd:


((5 3)) OF NIET (5=6) het resultaat zal Waar zijn

Logische operator XOR

Syntaxis:
Operand_1 XOR-operand_2


De XOR-operator doet dat wel logische uitzondering.

Het resultaat van deze bewerking is True als de operanden verschillende waarden hebben, anders False.


Waarheid tafel


((5 3)) OF NIET (5=6) XOR (5=5) het resultaat zal False zijn

Logische operator EQV

Syntaxis:
Operand_1 EQV-operand_2


De EQV-operator is de operator logische gelijkwaardigheid.

Het resultaat van deze bewerking is True als de operanden dezelfde waarden hebben, anders False.


Waarheid tafel


((5 3)) OF NIET (5=6) EQV (5=5) het resultaat zal True zijn

Logische operator IMP

Syntaxis:
Operand_1 IMP-operand_2


De IMP-operator voert een logische bewerking uit implicaties.


Waarheid tafel


((5 3)) OF NIET (5=6) IMP (5=5) het resultaat zal True zijn


De logische operator IMP is de minst intuïtieve van alle logische operators. Gelukkig komt de noodzaak om het te gebruiken vrij zelden voor.

De bewerking exclusieve OR (niet-equivalentie, optelling modulo twee) wordt aangegeven met een symbool en verschilt alleen van logische OR als A=1 en B=1.

De ongelijkheid tussen twee beweringen X1 en X2 wordt dus een bewering Y genoemd die waar is als en slechts als een van deze uitspraken waar is en de andere onwaar.

De definitie van deze operatie kan worden geschreven in de vorm van een waarheidstabel (Tabel 6):

Tabel 6 – Waarheidstabel van de “EXCLUSIEVE OF”-operatie

Zoals uit Tabel 6 blijkt, komt de logica van de werking van het element overeen met zijn naam.

Dit is hetzelfde “OR”-element met één klein verschil. Als de waarde aan beide ingangen gelijk is aan een logische waarde, dan is de uitvoer van het “EXCLUSIVE OR” -element, in tegenstelling tot het “OR” -element, niet één, maar nul.

De EXCLUSIEVE OF-bewerking vergelijkt feitelijk twee binaire cijfers voor een overeenkomst.

Elke logische verbinding wordt beschouwd als een bewerking op logische instructies en heeft zijn eigen naam en aanduiding (Tabel 7).

Tabel 7 - Logische basisbewerkingen

Aanduiding

operaties

Lezing

Naam van bewerking

Alternatieve benamingen

Negatie (inversie)

Lijn bovenaan

Conjunctie (logische vermenigvuldiging)

Disjunctie (logische toevoeging)

Als... dan

Implicatie

Dan en alleen dan

Gelijkwaardigheid

Of...of

EXCLUSIEF OF (optelling modulo 2)

  1. De volgorde van logische bewerkingen in een complexe logische expressie

Het systeem van logische bewerkingen van inversie, conjunctie en disjunctie stelt u in staat een willekeurig complexe logische uitdrukking te construeren.

Bij het berekenen van de waarde van een logische expressie wordt een bepaalde volgorde van logische bewerkingen uitgevoerd.

1. Inversie.

2. Conjunctie.

3. Disjunctie.

4. Implicatie.

5. Gelijkwaardigheid.

Haakjes worden gebruikt om de opgegeven volgorde van bewerkingen te wijzigen.

  1. Logische uitdrukkingen en waarheidstabellen

    1. Booleaanse expressies

Elke samengestelde verklaring kan worden uitgedrukt in de vorm van een formule (logische uitdrukking), waaronder: logische variabelen, het aanduiden van uitspraken, en tekenen van logische operaties, logische functies aanduiden.

Om een ​​samengestelde verklaring te schrijven in de vorm van een logische uitdrukking in een formele taal (de taal van de algebra van de logica), is het in een samengestelde verklaring noodzakelijk om eenvoudige verklaringen en logische verbindingen daartussen te identificeren.

Laten we in de vorm van een logische uitdrukking de samengestelde uitspraak “(2·2=5 of 2∙2=4) en (2∙2≠5 of 2∙ 2 4)".

Laten we de samengestelde verklaring analyseren. Het bevat twee eenvoudige uitspraken:

A = “2 2=5” - onwaar (0),

B = “2 2=4” - waar (1).

Vervolgens kan de samengestelde verklaring in de volgende vorm worden geschreven:

«( AofIN) en (À ofIN)».

Nu moet u de instructie in de vorm van een logische expressie schrijven, rekening houdend met de volgorde van logische bewerkingen. Bij het uitvoeren van logische bewerkingen wordt de volgende volgorde van uitvoering gedefinieerd:

inversie, conjunctie, disjunctie.

Haakjes kunnen worden gebruikt om de opgegeven volgorde te wijzigen:

F = (AvIN) & (Ā vIN).

De waarheid of onwaarheid van samengestelde uitspraken kan puur formeel worden bepaald, geleid door de wetten van de propositionele algebra, zonder te verwijzen naar de semantische inhoud van de uitspraken.

Laten we de waarden van logische variabelen vervangen door de logische expressie en, met behulp van de waarheidstabellen van logische basisbewerkingen, verkrijgen we de waarde van de logische functie:

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

      Waarheidstabellen

Tabellen waarin logische bewerkingen de resultaten weerspiegelen van berekeningen van complexe uitspraken voor verschillende waarden van de oorspronkelijke eenvoudige uitspraken, worden waarheidstabellen genoemd.

Eenvoudige uitspraken worden aangegeven met variabelen (bijvoorbeeld A en B).

Bij het samenstellen van waarheidstabellen is het raadzaam om u te laten leiden door een bepaalde reeks acties:

    het is noodzakelijk om het aantal rijen in de waarheidstabel te bepalen. Het is gelijk aan het aantal mogelijke combinaties van logische variabelewaarden opgenomen in een logische expressie. Als het aantal logische variabelen gelijk is P, Dat:

aantal regels = 2 N .

In ons geval de logische functie

heeft 2 variabelen en daarom moet het aantal rijen in de waarheidstabel 4 zijn;

    het is noodzakelijk om het aantal kolommen in de waarheidstabel te bepalen, wat gelijk is aan het aantal logische variabelen plus het aantal logische bewerkingen.

In ons geval is het aantal variabelen twee: A en B, en het aantal logische bewerkingen is vijf (tabel 8), dat wil zeggen dat het aantal kolommen van de waarheidstabel zeven is;

    het is noodzakelijk om een ​​waarheidstabel te bouwen met het opgegeven aantal rijen en kolommen, de kolommen aan te wijzen en mogelijke waardensets van de oorspronkelijke logische variabelen in de tabel in te voeren;

    het is noodzakelijk om de waarheidstabel in kolommen te vullen, waarbij logische basisbewerkingen in de vereiste volgorde en in overeenstemming met hun waarheidstabellen worden uitgevoerd.

We kunnen nu de waarde van een Booleaanse functie bepalen voor elke set Booleaanse variabelewaarden.

Tabel 8 – Waarheidstabel van een logische functie

Aangegeven door de stijlfiguur “of... of...” De samengestelde uitspraak “of A of B” is waar als A of B waar is, maar niet beide; anders is de samengestelde verklaring onjuist.

Die. het resultaat is waar (gelijk aan 1), Als A is niet gelijk aan B (A≠B).

Deze operatie wordt vaak vergeleken met disjunctie omdat ze qua eigenschappen erg op elkaar lijken, en beide overeenkomsten hebben met het voegwoord ‘of’ in alledaagse spraak. Vergelijk de regels voor deze bewerkingen:

1. waar als het waar is of , of beide tegelijk.

2. waar als het waar is of, Maar Niet beide tegelijk.

Operatie sluit uit de laatste optie (“beide tegelijk”) en wordt om deze reden exclusieve “OR” genoemd. Meerduidigheid natuurlijke taal is dat het voegwoord ‘of’ in beide gevallen kan worden gebruikt.

5. Implicatie (logische consequentie) wordt gevormd door twee uitspraken te combineren tot één met behulp van de stijlfiguur “als … dan ….”.

Opname: A®B

Een samengestelde bewering gevormd door de werking van implicatie is onwaar als en slechts als een valse conclusie (tweede bewering) volgt uit een ware premisse (de eerste bewering).

Die. als 1 0 impliceert, dan is het resultaat 0, in andere gevallen – 1.

De uitspraak ‘Als een getal deelbaar is door 10, dan is het deelbaar door 5’ is bijvoorbeeld waar, omdat zowel de eerste als de tweede bewering zijn waar.

De uitspraak “Als een getal deelbaar is door 10, dan is het deelbaar door 3” is onjuist, omdat een valse conclusie wordt getrokken uit een ware premisse.

"Deze vierhoek is een vierkant" (A) En "Een cirkel kan worden omgeschreven rond een bepaalde vierhoek" (IN). Dan luidt de samengestelde verklaring als “Als een bepaalde vierhoek een vierkant is, kan er een cirkel omheen worden getekend.”

In gewone taal het verbindende "als... dan" beschrijft de oorzaak-gevolgrelatie tussen uitspraken. Maar bij logische bewerkingen wordt geen rekening gehouden met de betekenis van uitspraken. Alleen hun waarheid of onwaarheid wordt in aanmerking genomen. Daarom moet men zich niet schamen voor de “zinloosheid” van implicaties gevormd door uitspraken die qua inhoud totaal niets met elkaar te maken hebben. Bijvoorbeeld zoals dit: ‘Als de president van de Verenigde Staten een Democraat is, dan zijn er giraffen in Afrika’, ‘als een watermeloen een bes is, dan is er benzine in het benzinestation.’

6. Equivalentie (logische gelijkheid, ~ º Û) wordt gevormd door twee uitspraken tot één te combineren met behulp van de stijlfiguur “...als en slechts als...”

Een samengestelde bewering gevormd door een equivalentiebewerking is waar dan en slechts dan als beide uitspraken tegelijkertijd onwaar of waar zijn.

De uitspraken 'Een computer kan berekenen als en alleen als deze is ingeschakeld' en 'Een computer kan niet berekenen als en alleen als deze niet is ingeschakeld' zijn bijvoorbeeld waar omdat beide eenvoudige uitspraken tegelijkertijd waar zijn.


Waarheidstabellen

Voor elke samengestelde uitspraak (logische functie) is het mogelijk een waarheidstabel samen te stellen die de waarheid of onwaarheid ervan bepaalt voor alle mogelijke combinaties van de beginwaarden van eenvoudige uitspraken.

Waarheid tafel is een tabelweergave van een logisch circuit (bewerking) dat alle mogelijke combinaties van de waarheidswaarden van de ingangssignalen (operanden) opsomt, samen met de waarheidswaarde van het uitgangssignaal (resultaat van de bewerking) voor elk van deze combinaties.

Laten we de hierboven besproken logische bewerkingen in de waarheidstabel weergeven:

In propositionele algebra kunnen alle logische functies door logische transformaties worden teruggebracht tot drie basisfuncties: logische optelling, logische vermenigvuldiging en logische negatie.

Laten we bewijzen dat de implicatiebewerking A®B equivalent is aan de logische uitdrukking: