Sunteți pe pagina 1din 6

Bitwise Operators in C

The Bitwise operators supported by C language are listed in the following table. Assume variable A holds 60 and variable B holds 13, then: Operator Description Binary AND Operator copies a bit to the result if it exists in both operands. Binary OR Operator copies a bit if it exists in either operand. Binary XOR Operator copies the bit if it is set in one operand but not both. Example (A & B) will give 12 which is 0000 1100 (A | B) will give 61 which is 0011 1101 (A ^ B) will give 49 which is 0011 0001 (~A ) will give -61 which is 1100 0011 in 2's complement form due to a signed binary number.

&

Binary Ones Complement Operator is unary and has the effect of 'flipping' bits.

<<

Binary Left Shift Operator. The left operands value is A << 2 will give 240 which is 1111 moved left by the number of bits specified by the right 0000 operand. Binary Right Shift Operator. The left operands value is moved right by the number of bits specified by the right operand.

>>

A >> 2 will give 15 which is 0000 1111

Example
Try the following example to understand all the bitwise operators available in C programming language: #include <stdio.h> main() { unsigned int a = 60; unsigned int b = 13; int c = 0; /* 60 = 0011 1100 */ /* 13 = 0000 1101 */

c = a & b; /* 12 = 0000 1100 */ printf("Line 1 - Value of c is %d\n", c ); c = a | b; /* 61 = 0011 1101 */ printf("Line 2 - Value of c is %d\n", c );

c = a ^ b; /* 49 = 0011 0001 */ printf("Line 3 - Value of c is %d\n", c ); c = ~a; /*-61 = 1100 0011 */ printf("Line 4 - Value of c is %d\n", c ); c = a << 2; /* 240 = 1111 0000 */ printf("Line 5 - Value of c is %d\n", c ); c = a >> 2; /* 15 = 0000 1111 */ printf("Line 6 - Value of c is %d\n", c ); } When you compile and execute the above program it produces the following result: Line Line Line Line Line Line 1 2 3 4 5 6 Value Value Value Value Value Value of of of of of of c c c c c c is is is is is is 12 61 49 -61 240 15

Detail Explanation

Bitwise Operators : AND,OR,XOR


AND,OR,XOR are three main Bitwise Operators in C Programming Language.AND Operator is used to mask particular Bits.Consider following table Input Bits 0 0 1 1 0 1 0 1 AND 0 0 0 1 OR 0 1 1 1 XOR 0 1 1 0

Live Example : Bitwise Operator (AND,OR,XOR)


#include<stdio.h>

int main() { int a=12,b=10; printf("\nNumber1 AND Number2 : %d",a & b); printf("\nNumber OR Number2 : %d",a | b); printf("\nNumber XOR Number2 : %d",a ^ b); return(0); }

Output :
Number1 AND Number2 : 8 Number OR Number2 : 14 Number XOR Number2 : 6

Bitwise Right Shift Operator in C


1. It is denoted by >> 2. Bit Pattern of the data can be shifted by specified number of Positions to Right 3. When Data is Shifted Right , leading zeros are filled with zero. 4. Right shift Operator is Binary Operator [Bi - two] 5. Binary means , Operator that require two arguments

Quick Overview of Right Shift Operator


Original Number A Right Shift by 2 Leading 2 Blanks Direction of Movement of Data 0000 0000 0011 1100 0000 0000 0000 1111 Replaced by 0 ,Shown in RED Right ========>>>>>>

Syntax :
[variable]>>[number of places]

Live Example : Bitwise Operator [Right Shift Operator]


#include<stdio.h> int main() { int a = 60; printf("\nNumber is Shifted By 1 Bit : %d",a >> 1); printf("\nNumber is Shifted By 2 Bits : %d",a >> 2); printf("\nNumber is Shifted By 3 Bits : %d",a >> 3); return(0); }

Output :
Number is Shifted By 1 Bit : 30 Number is Shifted By 2 Bits : 15 Number is Shifted By 3 Bits : 7

Bitwise Left Shift Operator in C


1. It is denoted by << 2. Bit Pattern of the data can be shifted by specified number of Positions to Left 3. When Data is Shifted Left , trailing zeros are filled with zero. 4. Left shift Operator is Binary Operator [Bi - two] 5. Binary means , Operator that require two arguments

Quick Overview of Left Shift Operator


Original Number A Left Shift Trailing Zeros 0000 0000 0011 1100 0000 0000 1111 0000 Replaced by 0 (Shown in RED) Direction of Movement of Data <<<<<=======Left

Syntax : Bitwise Left Shift Operator


[variable]<<[number of places]

Live Example : Bitwise Operator [Left Shift Operator]


#include<stdio.h> int main()

{ int a = 60; printf("\nNumber is Shifted By 1 Bit : %d",a << 1); printf("\nNumber is Shifted By 2 Bits : %d",a << 2); printf("\nNumber is Shifted By 3 Bits : %d",a << 3); return(0); }

Output :
Number is Shifted By 1 Bit : 120 Number is Shifted By 2 Bits : 240 Number is Shifted By 3 Bits : 480

S-ar putea să vă placă și