C/Data Type/Bit Shift

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

A bit shift example

<source lang="cpp">

  1. include <stdio.h>

int main(void) {

 unsigned int i;
 int j;
 i = 1;
 /* left shift i by 1, which is same as a multiply by 2 */
 for(j = 0; j < 6; j++) {
   i = i << 1;  
   printf("Left shift %d: %d\n", j, i);
 }
 /* right shift i by 1, which is same as a division by 2 */

 for(j = 0; j < 4; j++) {
   i = i >> 1;      
   printf("Right shift %d: %d\n", j, i);
 }
 return 0;

}


      </source>


Shift bitwise and display the result

<source lang="cpp">

  1. include <stdio.h>

void show_binary(unsigned u); int main(void) {

 unsigned short u;
 u = 45678;
 show_binary(u);
 u = u << 1;
 show_binary(u);
 u = u >> 1;
 show_binary(u);
 return 0;

} void show_binary(unsigned u) {

 int n;
 for( n = 32768; n > 0; n = n / 2 )
   if(u & n) 
       printf("1 ");
   else 
       printf("0 ");
 printf("\n");

}


      </source>


Shift statement in for

<source lang="cpp">

  1. include <stdio.h>

int main(void) {

 unsigned u = 100;
 int n;
 for(n = 32768; n; n = n >> 1)
   if(u & n) 
       printf("1 ");
   else 
       printf("0 ");
 printf("\n");
 return 0;

}


      </source>


Use bit shift to calculate

<source lang="cpp">

  1. include <stdio.h>

int main(void) {

 int i = 1;
 i <<= 3;  /* multiply by 2, 3 times */
 printf("%d", i);
 return 0;

}

      </source>