Menu
Coddy logo textTech

Operator XOR

Lekcja 6 z 17 w kursie Operacje bitowe w Coddy.

Operator XOR ( ^ )

Bitowy XOR przyjmuje dwa ciągi bitów o jednakowej długości. Jeśli nie są jednakowej długości, dodaj zera przed najbardziej znaczącym bitem krótszego ciągu. Jeśli bity na porównywanych pozycjach obu ciągów są równe, bit w wynikowym ciągu ma wartość 0, w przeciwnym razie 1. 

Symbol '^' służy do zapisu operacji XOR. 

W zapisie matematycznym używamy symbolu '⊕' do oznaczenia XOR. Dlatego w niektórych zadaniach możesz się z nim spotkać. Teraz utwórzmy tabelę, aby zobaczyć, jaki wynik zwraca operator XOR dla wszystkich możliwych kombinacji dwóch bitów.

x0011
y0101
x ^ y0110

Rozważmy przykład, aby lepiej zrozumieć tę operację —

W powyższym przykładzie wykonaliśmy operację XOR na (11)10 i (2)10 , w wyniku czego otrzymaliśmy (9)10. Zapisaliśmy te liczby w postaci binarnej, porównaliśmy oba bity i zastosowaliśmy powyższą definicję operacji XOR.

Zastosowanie:

int a = 1;
int b = 0;
>> a ^ b
OUTPUT: 1

XOR ma też pewne właściwości. Jeśli ich nie znasz, mogą znacznie skrócić czas rozwiązywania zadań związanych z XOR.

Ważne właściwości XOR

  1. x ⊕ 0 = x - Jeśli wykonasz XOR liczby z zerem, otrzymasz tę samą liczbę.
  2. x ⊕ x = 0 - Jeśli wykonasz XOR liczby z samą sobą, otrzymasz zero.
  3. Weźmy dwie liczby x i y. Załóżmy, że x ⊕ y = z. Wówczas równości x ⊕ z = y i y ⊕ z = x również są prawdziwe.
challenge icon

Wyzwanie

Średni

Sean uwielbia nosić skarpetki i mieć w szafie różne stylowe skarpetki. Trzyma skarpetki z zapisanymi na nich numerami. Na przykład (1,1), (10, 10) reprezentują dwie pary skarpet. Niestety pewnego dnia kot zakrada się do jego szafy i zabiera skarpetkę. Skarpetki znajdujące się w szafie są podane jako tablica. Uzupełnij funkcję MissingSock, aby ustalić, którą skarpetkę zabrał kot.

Na przykład:

W szafie pierwotnie znajduje się 6 skarpetek: 1, 1, 2, 3, 3, 2, 

  • 2 skarpetki z numerem 1
  • 2 skarpetki z numerem 2 
  • 2 skarpetki z numerem 3

Kot przyszedł i ukradł jedną skarpetkę z numerem 1. Dane wejściowe to teraz: 1, 2, 3, 3, 2, ponieważ brakuje jednej skarpetki z numerem 1. Wyzwaniem jest znalezienie brakującej skarpetki (wynikiem powinno być 1, ponieważ to właśnie ta skarpetka zaginęła).

Spróbuj swoich sił

#include <iostream>
#include <vector>
using namespace std;

int MissingSock(vector<int> socks) {
    // Wpisz kod tutaj
}

Wszystkie lekcje w sekcji Operacje bitowe

Poćwicz samodzielnie: Kompilator C++ online