Operazioni bit per bit

Complemento ad Uno

Complemento del valore della variabile fino ad uno. Il valore dell'espressione contiene 1 in tutte le cifre dove il valore della variabile contiene 0, e 0 in tutte le cifre dove la variabile contiene 1.

b = ~n;

Esempio:

   char a='a',b;
   b=~a;
   Print("a = ",a, "  b = ",b);  
// Il risultato sarà:
// a = 97   b = -98

Slittamento a Destra

La rappresentazione binaria di x è spostata a destra di y cifre. Se il valore per slittamento è del tipo senza segno, viene fatto lo slittamento logico destra, cioè i bit liberati del lato sinistro saranno riempiti con zeri.

Se il valore per lo slittamento è di tipo segnato, viene fatto lo slittamento aritmetico a destra, cioè le cifre liberate del lato-sinistro verranno riempitecon il valore di un bit di segno (se il numero è positivo, il valore del bit di segno è 0 , se il numero è negativo, il valore del bit di segno è 1).

x = x >> y;

Esempio:

   char a='a',b='b';
   Print("Prima:  a = ",a, "  b = ",b); 
//--- slittamento verso destra
   b=a>>1;
   Print("Dopo:   a = ",a, "  b = ",b); 
// Il risultato sarà:
// Prima:  a = 97   b = 98
// Dopo:   a = 97   b = 48

Slittamento sinistro

La rappresentazione binaria di x viene slittata verso sinistra di y cifre, i numeri liberati sul lato-destro vengono riempiti con zeri.

x = x << y;

Esempio:

   char a='a',b='b';
   Print("Prima:  a = ",a, "  b = ",b); 
//--- slittamento a sinistra
   b=a<<1;
   Print("Dopo:   a = ",a, "  b = ",b); 
// Il risultato sarà:
// Prima:  a = 97   b = 98
// Prima:   a = 97   b = -62

Non è consigliabile slittare per un numero di bit maggiore o uguale alla lunghezza della variabile spostata, perché il risultato di tale operazione è indefinito.

L'operazione AND di bit

L'operazione AND di bit, di rappresentazioni x ed y codificate in binario. Il valore dell'espressione contiene un 1 (VERO) in le cifre dove x ed y contengono non-zeri, e contiene 0 (FALSO) in tutte le altre cifre.

b = ((x & y) != 0);

Esempio:

   char a='a',b='b';
//--- Operazione AND
   char c=a&b;
   Print("a = ",a,"  b = ",b);
   Print("a & b = ",c);
// Il risultato sarà:
// a = 97   b = 98
// a & b = 96

L'operazione OR di bit

L'operazione OR di bit di rappresentazioni binarie di x e y. Il valore dell'espressione contiene 1 in tutte le cifre dove x o y non contengono 0, e contiene 0 in tutte le altre cifre.

b = x | y;

Esempio:

   char a='a',b='b';
//--- Operazione OR
   char c=a|b;
   Print("a = ",a,"  b = ",b);
   Print("a | b = ",c);
// Il risultato sarà:
// a = 97   b = 98
// a | b = 99

L' operazione OR Esclusivo di bit

L'operazione OR Esclusivo di bit (eXclusive OR) di rappresentazioni binarie di x e y. Il valore dell'espressione contiene un 1 in tutte le cifre dove x e y hanno valori binari diversi, e contiene 0 in tutte le altre cifre.

b = x ^ y;

Esempio:

   char a='a', b='b';
//--- Operazione di Esclusione OR
   char c=a^b;
   Print("a = ",a,"  b = ",b);
   Print("a ^ b = ",c);
// Il risultato sarà:
// a = 97   b = 98
// a ^ b = 3

Operazioni di bit vengono eseguite solo con interi.

Vedi anche

Regole di Precedenza