Przejdź do treści

Centrum Kształcenia Zawodowego i Ustawicznego w Mrągowie

Operator XOR

niedziela,

Operator XOR

Operator XOR, znany również jako „exclusive or” (wykluczające LUB), jest operatorem logicznym stosowanym w matematyce i informatyce. Działa on na zasadzie porównywania dwóch wartości binarnych (0 lub 1) w taki sposób, że wynik jest równy 1 tylko wtedy, gdy porównywane wartości są różne. Jeśli obie wartości są takie same (oba 0 lub oba 1), wynik operacji XOR wynosi 0. Inne określenie XOR to alternatywa rozłączna, alternatywa wyłączająca, ekskluzja, alternatywa wykluczająca, różnica symetryczna, suma poprzeczna, suma modulo 2, kontrawalencja.

Jak działa XOR?

  • 0 XOR 0 = 0 (ponieważ obie wartości są takie same)
  • 0 XOR 1 = 1 (ponieważ wartości są różne)
  • 1 XOR 0 = 1 (ponieważ wartości są różne)
  • 1 XOR 1 = 0 (ponieważ obie wartości są takie same)

Przykłady

Prosty przykład

    11001101
XOR 11111111
-----------
    00110010

Wynik operacji 11001101 XOR 11111111 to 00110010.

Czy operacja XOR jest przemienna?

Żeby to sprawdzić, zamieniono kolejność argumentów z poprzedniego przykładu.

    11111111
XOR 11001101
-----------
    00110010

Wynik operacji 11111111 XOR 11001101 to 00110010, zatem odpowiedź brzmi „TAK”.

Kolejny przykład

    11011101
XOR 11110000
-----------
    00101101

Wynik operacji 11011101 XOR 11110000 to 00101101.

Zastosowania operatora XOR

Operator XOR jest uniwersalnym narzędziem, znajdującym zastosowanie w wielu dziedzinach informatyki i elektroniki.

  • Kodowanie i szyfrowanie danych – XOR jest często używany w prostych algorytmach szyfrowania, ponieważ operacja jest łatwa do odwrócenia. Na przykład, jeśli zaszyfrujesz dane za pomocą określonego klucza przy użyciu XOR, możesz odszyfrować dane, ponownie stosując XOR z tym samym kluczem.
  • Detekcja zmian – może być używany do wykrywania zmian w danych. Przez porównanie dwóch zestawów danych za pomocą XOR, można łatwo zidentyfikować, gdzie wystąpiły zmiany.
  • Operacje bitowe – w programowaniu, XOR jest często stosowany w operacjach bitowych do manipulowania wartościami binarnymi na poziomie indywidualnych bitów.
  • Parzystość – XOR jest używany do obliczania bitów parzystości w niektórych formach kontroli błędów transmisji danych.
  • Logika cyfrowa i projektowanie układów – w elektronice cyfrowej, bramki XOR są podstawowym składnikiem w projektowaniu układów logicznych i mikroprocesorów.
  • Gry i algorytmy – XOR znajduje zastosowanie w niektórych grach logicznych i algorytmach, gdzie decydująca jest manipulacja wartościami binarnymi.

Operator XOR w programowaniu

W językach programowania, takich jak C/C++/C#/Java/JavaScript i wielu innych, alternatywę rozłączną oznaczamy za pomocą symbolu ^. Poniżej znajdziesz kilka przykładowych kodów programów w różnych językach, które ilustrują różne zastosowania operatora XOR w różnych językach programowania.

Python: Proste operacje

# Prosta operacja XOR
a = 0b1010  # Binarnie dla 10
b = 0b1100  # Binarnie dla 12

result =  a ^ b  # Wynik to 0b0110, co odpowiada 6
print("a XOR b =", result)

# Sprawdzenie parzystości
number = 15
parity = 0
while number:
    parity ^= number & 1
    number >>= 1

print("Parzystość:", parity)  # Wynik: 0 dla parzystych, 1 dla nieparzystych

Język C++: Szyfrowanie i deszyfrowanie

#include <iostream>
#include <string>

std::string xorCipher(std::string text, char key) {
    std::string output = text;

    for (size_t i = 0; i < text.size(); i++) {
        output[i] = text[i] ^ key;
    }

    return output;
}

int main() {
    std::string original = "Hello World!";
    char key = 'X';

    std::string encrypted = xorCipher(original, key);
    std::string decrypted = xorCipher(encrypted, key);

    std::cout << "Oryginał: " << original << std::endl;
    std::cout << "Zaszyfrowane: " << encrypted << std::endl;
    std::cout << "Rozszyfrowane: " << decrypted << std::endl;

    return 0;
}

Java: Operacje Bitowe

public class BitwiseXOR {
    public static void main(String[] args) {
        int  a = 5;  // Binarnie 0101
        int b = 3;  // Binarnie 0011

        // Operacja XOR
        int result =  a ^ b;  // Wynik to 0101 ^ 0011 = 0110, co odpowiada 6
        System.out.println("a XOR b = " + result);
    }
}

PHP

<?php
$a = 12;  // Binarnie: 1100
$b = 5;   // Binarnie: 0101

// Operacja XOR
$result = $a ^ $b; // Binarnie: 1001, co odpowiada 9

echo $result;  // Wyświetli 9
?>

JavaScript

let  a = 12;  // Binarnie: 1100
let b = 5;   // Binarnie: 0101

// Operacja XOR
let result =  a ^ b; // Binarnie: 1001, co odpowiada 9

console.log(result);  // Wyświetli 9

Ruby

a = 12  # Binarnie: 1100
b = 5   # Binarnie: 0101

# Operacja XOR
result =  a ^ b # Binarnie: 1001, co odpowiada 9

puts result  # Wyświetli 9

Powłoka bash

#!/bin/bash

# Definiowanie dwóch liczb
a=12   # Binarnie: 1100
b=5    # Binarnie: 0101

# Operacja XOR
result=$((a ^ b))

echo "Wynik operacji XOR: $result" # Wynik to 9 (binarnie: 1001)

W tym przykładzie wystąpiły dwie zmienne ab, na których wykonano operację XOR, używając operatora ^ wewnątrz $(( )), który w bash służy do wykonywania obliczeń. Następnie za pomocą polecenia echo jest wyświetlany wynik. Pamiętaj, że skrypty bash muszą być uruchamiane w środowisku, które wspiera powłokę bash, takim jak Linux lub macOS, lub w systemie Windows z zainstalowanym narzędziem, takim jak Git Bash lub WSL (Windows Subsystem for Linux).

Zadania

Trening czyni mistrza, warto rozwiązać kilka prostych zadań. Twoim zadaniem jest obliczenie wyniku operacji XOR na danych liczbach binarnych. Pamiętaj, że XOR zwraca 1 tylko wtedy, gdy bity są różne – w przeciwnym razie wynikiem jest 0.

Zadanie 1

    1010
XOR 1100
------------

Zadanie 2

    0011
XOR 1011
------------

Zadanie 3

    1111
XOR 0000
------------

Zadanie 4

    0101
XOR 1010
------------

Zadanie 5

    1001
XOR 1001
------------

Trzy miesiące temu na naszej stronie…

Artykuł: Józef Piłsudski

Józef Piłsudski

Artykuł: GIMP: Zaznaczanie prostokątne i&nbsp;eliptyczne

GIMP: Zaznaczanie prostokątne i eliptyczne

Artykuł: GIMP: Zapisywanie zaznaczenia

GIMP: Zapisywanie zaznaczenia

Artykuł: Symulator sieci komputerowej

Symulator sieci komputerowej

Artykuł: Linux: Polecenie dmidecode

Linux: Polecenie dmidecode

Artykuł: Specyfikacja: Przydatne programy

Specyfikacja: Przydatne programy

Nasze technikum

Technik informatyk

Szkoły dla dorosłych

Nasza szkoła

Pełna oferta edukacyjna

Oferta szkoły