#include <stdio.h>
#include <limits.h>
#include <stdlib.h>

#define false 0
#define true 1
typedef int bool;

void debug(unsigned x) {
  for(int i=sizeof(x)<<3; i; i--) putchar('0'+((x>>(i-1))&1));
}

int main(void) {
  unsigned value  = 0b0000000000001101101010110110;
  unsigned mask = 0b11011;
  unsigned imask = 0b11111;
  unsigned dig = sizeof(unsigned)*CHAR_BIT;
  unsigned i,tmp;
  bool found = false;
  for(i=0; i<dig-5; i++) {
  	printf("i = %d\n",i);
  	printf("value        : ");
  	debug(value);
  	printf("\n");
  	printf("value & imask: ");
  	debug(value & (imask << (dig-5-i)));
  	printf("\n");
  	printf("         mask: ");
  	debug(mask << (dig-5-i));
  	printf("\n ---\n");
  	if ((value & (imask << (dig-5-i))) == (mask << (dig-5-i))) {
  	  found = true;
  	  break;
  	} 
  }
  if (found) {
  	printf("нашли: %d", dig-i-1);
  } else {
  	printf("не нашли!!");
  }
  return 0;
}
