Advertisement
Thotu

Consecutive Bits

Nov 13th, 2019
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.72 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 consecutiveBits(unsigned num){
  22.   unsigned segments=1;
  23.   unsigned bitSegment = 1 - (num & 1);
  24.   unsigned bitNew;
  25.  
  26.   for ( ; num ; num>>=1 ){
  27.     bitNew = num & 1;
  28.     if (bitNew != bitSegment){
  29.       bitSegment = 1 - bitSegment;
  30.       segments++;
  31.     }
  32.   }
  33.  
  34.   return segments;
  35. }
  36.  
  37. int main(){
  38.   unsigned n=0xd3f3;
  39.   printHexAndBits(n);
  40.   printf("%u",consecutiveBits(n));
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement