Advertisement
Thotu

Alternating Bits

Nov 13th, 2019
381
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.78 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. void printHexAndBits(unsigned num){
  4.   printf("%x\t%u\t",num,num);
  5.   int i=1;
  6.   for ( unsigned mask = ~( ~0u >> 1 ); mask ; mask >>= 1, i++ ){
  7.     if ( num & mask){
  8.       putchar('1');
  9.     }
  10.     else {
  11.       putchar('0');
  12.     }
  13.  
  14.     if (i%4==0){
  15.       putchar(' ');
  16.     }
  17.   }
  18.   putchar('\n');
  19. }
  20.  
  21. unsigned alternatingBits(unsigned num){
  22.   unsigned bitAlt = 1 - (num & 1);
  23.   unsigned bitNew;
  24.  
  25.   for ( ; num ; num>>=1 ){
  26.     bitNew = num & 1;
  27.     if (bitNew == bitAlt){
  28.       return 0;
  29.     }
  30.     bitAlt = 1 - bitAlt;
  31.   }
  32.  
  33.   return 1;
  34. }
  35.  
  36. int main(){
  37.   unsigned n=0x55555;
  38.   printHexAndBits(n);
  39.   if (alternatingBits(n)){
  40.     printf("n: %u - has alternating bits",n);
  41.   }
  42.   else {
  43.     printf("n: %u - doesn't have alternating bits",n);
  44.   }
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement