C Tutorial/Operator/Shift operator

Материал из C\C++ эксперт
Перейти к: навигация, поиск

Using the bitwise shift operators

#include <stdio.h>
void displayBits( unsigned value );
int main()
{ 
   unsigned number1 = 960;
   printf( "\nThe result of left shifting\n" );
   displayBits( number1 );
   printf( "8 bit positions using the " );
   printf( "left shift operator << is\n" );
   displayBits( number1 << 8 );
   printf( "\nThe result of right shifting\n" );
   displayBits( number1 );
   printf( "8 bit positions using the " );
   printf( "right shift operator >> is\n" );
   displayBits( number1 >> 8 );
   return 0;
}
void displayBits( unsigned value ) { 
   unsigned c;
   
   unsigned displayMask = 1 << 31;
   printf( "%7u = ", value );
   for ( c = 1; c <= 32; c++ ) { 
      putchar( value & displayMask ? "1" : "0" );
      value <<= 1;
      if ( c % 8 == 0 ) {
         putchar( " " );
      }
   }
   putchar( "\n" );
}
The result of left shifting
    960 = 00000000 00000000 00000011 11000000
8 bit positions using the left shift operator << is
 245760 = 00000000 00000011 11000000 00000000
The result of right shifting
    960 = 00000000 00000000 00000011 11000000
8 bit positions using the right shift operator >> is
      3 = 00000000 00000000 00000000 00000011