Udostępnij za pośrednictwem


Operatory bitowe języka C

Operatory bitowe wykonują operacje bitowe AND (&), bit-exclusive-OR (^) i bitowe inkluzywne or (|).

Składnia

AND-expression:
equality-expression
AND-expression & equality-expression

exclusive-OR-expression:
AND-expression
exclusive-OR-expression ^ AND-expression

inclusive-OR-expression:
exclusive-OR-expressioninclusive-OR-expression | exclusive-OR-expression

Operandy operatorów bitowych muszą mieć typy całkowite, ale ich typy mogą być różne. Te operatory wykonują zwykłe konwersje arytmetyczne; typ wyniku jest typem operandów po konwersji.

Operatory bitowe języka C zostały opisane poniżej:

Operator Opis
& Operator bitowy AND porównuje każdy bit pierwszego operandu do odpowiadającego mu bitu drugiego operandu. Jeśli oba bity mają wartość 1, odpowiedni bit wynikowy ma wartość 1. W przeciwnym razie odpowiedni bit wyniku jest ustawiony na wartość 0.
^ Operator bitowo-exclusive-OR porównuje każdy bit pierwszego operandu do odpowiadającego mu bitu drugiego operandu. Jeśli jeden bit to 0, a drugi bit to 1, odpowiedni bit wynikowy ma wartość 1. W przeciwnym razie odpowiedni bit wyniku jest ustawiony na wartość 0.
| Operator bitowo-inkluzywne OR porównuje każdy bit pierwszego operandu do odpowiadającego mu bitu drugiego operandu. Jeśli jeden bit ma wartość 1, odpowiedni bit wynikowy ma wartość 1. W przeciwnym razie odpowiedni bit wyniku jest ustawiony na wartość 0.

Przykłady

Te deklaracje są używane w następujących trzech przykładach:

short i = 0xAB00;
short j = 0xABCD;
short n;

n = i & j;

Wynik przypisany do n w tym pierwszym przykładzie jest taki sam jak i (0xAB00 szesnastkowy).

n = i | j;

n = i ^ j;

Bitowe or w drugim przykładzie powoduje, że wartość 0xABCD (szesnastkowa), podczas gdy bitowy lub w trzecim przykładzie generuje 0xCD (szesnastkowy).

Specyficzne dla firmy Microsoft

Wynikiem operacji bitowej na podpisanych liczbach całkowitych jest zdefiniowana implementacja zgodnie ze standardem C. W przypadku kompilatora Microsoft C operacje bitowe na podpisanych liczbach całkowitych działają tak samo jak operacje bitowe dla niepodpisanych liczb całkowitych. Na przykład -16 & 99 można wyrazić w pliku binarnym jako

  11111111 11110000
& 00000000 01100011
  _________________
  00000000 01100000

Wynik bitowego I wynosi 96 dziesiętnych.

END Microsoft Specific

Zobacz też

Bitowy operator AND: &
Bitowy wyłączny operator OR: ^
Operator or inkluzywny bitowy: |