Δυφιοτελής πράξη

Στην πληροφορική, μία **δυφιοτελής πράξη** είναι μία πράξη που ενεργεί στα ψηφία της δυαδικής αναπαράστασης ενός (ή παραπάνω) δυαδικών αριθμών,  δυαδικών συμβολοσειρών ή δυαδικών πινάκων.

Οι περισσότερες από αυτές τις πράξεις υλοποιούνται σε μοντέρνους επεξεργαστές υπολογιστών ως μία εντολή, που συνήθως είναι *πολύ* πιο γρήγορη από την διαίρεση, *αρκετά* πιο γρήγορη από τον πολλαπλασιασμό και *λίγο* πιο γρήγορη από την πρόσθεση/αφαίρεση. Επομένως, αυτές οι πράξεις συχνά χρησιμοποιούνται για να επιταχύνουν πιο πολύπλοκους υπολογισμούς ή για την αναπαράσταση συνόλων ακεραίων αριθμών.

## Δυφιοτελείς πράξεις

Οι παρακάτω πράξεις προκύπτουν από την γενίκευση των αντίστοιχων λογικών τελεστών.

### Δυφιοτελής άρνηση

Η **δυφιοτελής άρνηση** είναι μία μοναδιαία πράξη η οποία εφαρμόζει την λογική άρνηση σε κάθε ψηφίο της εισόδου, δηλαδή κάθε 1 μετατρέπεται σε 0 και κάθε 0 σε 1. 

Αυστηρά μπορεί να οριστεί για μία δυαδική συμβολοσειρά x = x_{n-1} \ldots x_1x_0 με n ψηφία x_i \in \{0, 1\} (για 0 \leq i \leq n) ως εξής
:\operatorname{NOT}(x_{n-1} \ldots x_1x_0) = y_{n-1} \ldots y_1y_0,
όπου για κάθε 0 \leq i 
:y_i = \neg x_i = \begin{cases}
 0 & \text{αν }x_i = 1 \\
 1 & \text{αν }x_i = 0.
\end{cases}

Ισοδύναμα, μπορεί να οριστεί χρησιμοποιώντας αριθμητική υπολοίπων με βάση το 2 ως
:\operatorname{NOT}(x) = \sum_{i = 0}^{n-1} 2^i \cdot ( (x_i + 1) \bmod{2}),
όπου x_i = \lfloor x / 2^i \rfloor \bmod{2}.

#### Παράδειγμα 1ο

:\begin{align}
\operatorname{NOT}(&011010111) & (=\operatorname{NOT}(215_{10}))\\
  = &100101000 & (=296_{10}).
\end{align}
#### Παράδειγμα 2ο

:\begin{align}
\operatorname{NOT}(&110001001) & (=\operatorname{NOT}(393_{10}))\\
  = &001110110 & (=118_{10}).
\end{align}

**Σημείωση:** Το πλήθος των ψηφίων του αριθμού (ή της συμβολοσειράς) έχει σημασία στο αποτέλεσμα, καθώς επιρεάζει το πλήθος των άσων στο τελικό αποτέλεσμα.

### Δυφιοτελής σύζευξη

Η **δυφιοτελής σύζευξη** είναι μία δυαδική πράξη η οποία εφαρμόζει την λογική σύζευξη στα αντίστοιχα ψηφία των δύο τιμών εισόδου. 

Αυστηρά μπορεί να οριστεί για τις δυαδικές συμβολοσειρές x = x_{n-1} \ldots x_1x_0 και y = y_{n-1} \ldots y_1y_0 με n ψηφία x_i, y_i \in \{0, 1\} (για 0 \leq i \leq n) ως εξής
:\operatorname{AND}(x_{n-1} \ldots x_1x_0, y_{n-1} \ldots y_1y_0) = z_{n-1} \ldots z_1z_0,
όπου για κάθε 0 \leq i 
:z_i = x_i \land y_i = \begin{cases}
 1 & \text{αν }x_i = 1\text{ και }y_i = 1 \\
 0 & \text{διαφορετικά}.
\end{cases}

Ισοδύναμα, μπορεί να οριστεί χρησιμοποιώντας αριθμητική υπολοίπων με βάση το 2 ως
:\operatorname{AND}(x, y) = \sum_{i = 0}^{n-1} 2^i \cdot (x_i \cdot y_i),
όπου x_i = \lfloor x / 2^i \rfloor \bmod{2} και y_i = \lfloor y / 2^i \rfloor \bmod{2}.

#### Παράδειγμα

:\begin{align}
\operatorname{AND}(
 &011010111, & (=215_{10})\\
 &110110101 ) & (=437_{10})\\
=&010010101 & (=149_{10}).
\end{align}

### Δυφιοτελής διάζευξη

Η **δυφιοτελής διάζευξη** είναι μία δυαδική πράξη η οποία εφαρμόζει την λογική διάζευξη στα αντίστοιχα ψηφία των δύο τιμών εισόδου. 

Αυστηρά μπορεί να οριστεί για τις δυαδικές συμβολοσειρές x = x_{n-1} \ldots x_1x_0 και y = y_{n-1} \ldots y_1y_0 με n ψηφία x_i, y_i \in \{0, 1\} (για 0 \leq i \leq n) ως εξής
:\operatorname{OR}(x_{n-1} \ldots x_1x_0, y_{n-1} \ldots y_1y_0) = z_{n-1} \ldots z_1z_0,
όπου για κάθε 0 \leq i 
:z_i = x_i \lor y_i = \begin{cases}
 0 & \text{αν }x_i = 0\text{ και }y_i = 0 \\
 1 & \text{διαφορετικά}.
\end{cases}

Ισοδύναμα, μπορεί να οριστεί χρησιμοποιώντας αριθμητική υπολοίπων με βάση το 2 ως
:\operatorname{OR}(x, y) = \sum_{i = 0}^{n-1} 2^i \cdot (x_i + y_i - x_i y_i),
όπου x_i = \lfloor x / 2^i \rfloor \bmod{2} και y_i = \lfloor y / 2^i \rfloor \bmod{2}.

#### Παράδειγμα

:\begin{align}
\operatorname{OR}(
 &011010111, & (=215_{10})\\
 &110110101 ) & (=437_{10})\\
=&111110111 & (=503_{10}).
\end{align}

### Δυφιοτελής αποκλειστική διάζευξη

Η **δυφιοτελής αποκλειστική διάζευξη** είναι μία δυαδική πράξη η οποία εφαρμόζει την λογική αποκλειστική διάζευξη στα αντίστοιχα ψηφία των δύο τιμών εισόδου. 

Αυστηρά μπορεί να οριστεί για τις δυαδικές συμβολοσειρές x = x_{n-1} \ldots x_1x_0 και y = y_{n-1} \ldots y_1y_0 με n ψηφία x_i, y_i \in \{0, 1\} (για 0 \leq i \leq n) ως εξής
:\operatorname{XOR}(x_{n-1} \ldots x_1x_0, y_{n-1} \ldots y_1y_0) = z_{n-1} \ldots z_1z_0,
όπου για κάθε 0 \leq i 
:z_i = x_i \oplus y_i = \begin{cases}
 0 & \text{αν }x_i = y_i \\
 1 & \text{αν }x_i \neq y_i.
\end{cases}

Ισοδύναμα, μπορεί να οριστεί χρησιμοποιώντας αριθμητική υπολοίπων με βάση το 2 ως
:\operatorname{XOR}(x, y) = \sum_{i = 0}^{n-1} 2^i \cdot ((x_i + y_i) \bmod{2}),
όπου x_i = \lfloor x / 2^i \rfloor \bmod{2} και y_i = \lfloor y / 2^i \rfloor \bmod{2}.

#### Παράδειγμα

:\begin{align}
\operatorname{XOR}(
 &011010111, & (=215_{10})\\
 &110110101 ) & (=437_{10})\\
=&101100010 & (=354_{10}).
\end{align}

## Στις γλώσσες προγραμματισμού

Στην C++, την Java και την Python οι δυφιοτελείς τελεστές αντιστοιχούν στα εξής σύμβολα:

:

## Δείτε επίσης
* Δυαδικό σύστημα
* Άλγεβρα Μπουλ

## Παραπομπές


Κατηγορία:Δυαδική αριθμητική
Κατηγορία:Άλγεβρα Μπουλ