Bitwise Shift Left
The Bitwise Shift Left operator shifts the number left. The most significant bits are lost as the number moves left, and the vacated least significant bits are zero. The following shows the binary representation of 43.
0101011 (decimal 43)
By shifting the bits to the left, we lose the most significant bit (in this case, a zero), and the number is padded with a zero at the least significant bit. The following is the resulting number.
1010110 (decimal 86)
Bitwise Shift Right
The Bitwise Shift Right operator shifts the number right. Zero is introduced to the vacated most significant bits, and the vacated least significant bits are lost. The following shows the binary representation of the number 43.
0101011 (decimal 43)
By shifting the bits to the right, we lose the least significant bit (in this case, a one), and the number is padded with a zero at the most significant bit. The following is the resulting number.
0010101 (decimal 21)
The following program uses the Bitwise Shift Right and Bitwise AND to display a number as a 16-bit binary number. The number is shifted right successively from 16 down to zero and Bitwise ANDed with 1 to see if the bit is set. An alternative method would be to use successive masks with the Bitwise OR operator.
#include <stdio.h>
int main()
{
int counter, num;
printf("Enter a number: ");
scanf("%d", &num);
printf("%d is binary: ", num);
for (counter=15; counter>=0; counter--)
printf("%d", (num >> counter) & 1);
putchar('\n');
return 0;
}
Functions for Binary – Decimal Conversions
The two functions given next are for Binary to Decimal and Decimal to Binary conversion. The function given next to convert a decimal number to corresponding binary number supports up to 32 – Bit Binary number. You can use this or program given before for conversion as per your requirements.
|