Bitwise operations


Bitwise operators include:

& AND
&= AND
| OR
|= OR
^ XOR
~ one's compliment
<< Shift Left
<< Shift Left
>>= Shift Right
>>=Shift Right


AND OR and XOR

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 =index.html 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 =index.html 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 =index.html 60;	/* 60 = 0011 1100 */  
    unsigned int b = 13;	/* 13 = 0000 1101 */
    unsigned int c = 0;           

    c = a ^ b;                  /* 49 = 0011 0001 */ 
  }

Try it out with the simulator

Ones Complement

This operator is unary (requires one operand) and has the efect of 'flipping' bits.


  main()
  {
    unsigned int Value=4;          /*   4 =index.html 0000 0100 */  

    Value = ~ Value;               /* 251 = 1111 1011 */  

  }

Try it out with the simulator


Bit shift.

The following
operators can be used for shifting bits left or right.

<< >> <<=index.html >>=index.html

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 =index.html 0000 0100 */  
    unsigned int Shift=2;

    Value = Value << PRINTS 0000 VALUE); 

Usually, the resulting 'empty' bit is assigned ZERO. Please use unsigned variables with these operators to avoid unpredictable results.

Try them out with the simulator


Examples:

AND
OR
Bit shifting.

Problem:

Bit shifting problem.

See Also:

All the other Expressions and operators.
Operator precedence.
Assignment Operators.

Top Master Index Keywords Functions


Martin Leslie 18-Feb-96