Bitwise operators include:
& | AND |
&= | AND Assignment |
| | OR |
|= | OR Assignment |
^ | XOR |
^= | XOR Assignment |
~ | one's compliment |
<< | Shift Left |
<< | Shift Left |
>>= | Shift Right Assignment |
>>= | Shift Right Assignment |
These require two operands and will perform bit comparisions.
AND & will copy a bit to the result if it exists in both operands.
main() { unsigned int a = 60; /* 60 = 0011 1100 */ unsigned int b = 13; /* 13 = 0000 1101 */ unsigned int c = 0; c = a & b; /* 12 = 0000 1100 */ } |
OR | will copy a bit if it exists in eather operand.
main() { unsigned int a = 60; /* 60 = 0011 1100 */ unsigned int b = 13; /* 13 = 0000 1101 */ unsigned int c = 0; c = a | b; /* 61 = 0011 1101 */ } |
XOR ^ copies the bit if it is set in one operand (but not both).
main() { unsigned int a = 60; /* 60 = 0011 1100 */ unsigned int b = 13; /* 13 = 0000 1101 */ unsigned int c = 0; c = a ^ b; /* 49 = 0011 0001 */ } |
XOR example program which swaps the contents of two variables.
CGI simulator | JavaScript Simulator |
This operator is unary (requires one operand) and has the efect of 'flipping' bits.
main() { unsigned int Value=4; /* 4 = 0000 0100 */ Value = ~ Value; /* 251 = 1111 1011 */ } |
CGI simulator |
The following operators can be used for shifting bits left or right.
<< | >> | <<= | >>= |
The left operands value is moved left or right by the number of bits specified by the right operand. For example:
main() { unsigned int Value=4; /* 4 = 0000 0100 */ unsigned int Shift=2; Value = Value << Shift; /* 16 = 0001 0000 */ Value <<= Shift; /* 64 = 0100 0000 */ printf("%d\n", Value); /* Prints 64 */ } |
Usually, the resulting 'empty' bit is assigned ZERO. Please use unsigned variables with these operators to avoid unpredictable results.
CGI simulator | JavaScript Simulator |
All the other
Expressions and operators.
Operator precedence.
Assignment Operators.
Top | Master Index | Keywords | Functions |