Bitwise esclusiva O
Bitwise l'esclusiva O è allineare se le une o le altre punte sono regolate, ma non entrambe. Le seguenti esposizioni il risultato bitwise di un'esclusiva O sui numeri 23 e 12.
10111 (23)
01100 (12) Exclusive OR (XOR)
_____________________________
11011 (result = 27) |
L'esclusiva O ha alcune proprietà interessanti. Se esclusiva O un numero da sè, esso vi regolate a zero poichè gli zeri rimarranno zero e quei non possono entrambi essere regolati in modo da sono regolati a zero.
Come conseguenza di questo, se esclusiva O un numero con un altro numero, allora esclusiva O il risultato con l'altro numero ancora, il risultato siete il numero originale. Potete provare questo con i numeri usati nel suddetto esempio.
23 XOR 12 = 27
27 XOR 12 = 23
27 XOR 23 = 12
Questa caratteristica può essere usata per la crittografia. Il seguente programma usa una chiave di crittografia di 23 per illustrare la proprietà su un numero inserito dall'utente.
#include <stdio.h>
int main()
{
int num, key = 23;
printf("Enter a number: ");
scanf("%d", &num);
num ^= key;
printf("Exclusive OR with %d gives %d\n", key, num);
num ^= key;
printf("Exclusive OR with %d gives %d\n", key, num);
return 0;
}
Bitwise complimento
Il compliment è bitwise il suo operatore di complimento che fornisce la punta di un cavicchio sopra o fuori. Se è 1, sarà regolato a 0, se è 0 che sarà regolato a 1.
#include <stdio.h>
int main()
{
int num = 0xFFFF;
printf("The compliment of %X is %X\n", num, ~num);
return 0;
}
|