#include <stdio.h>
#include <limits.h>
#include <stdlib.h>
#define false 0
#define true 1
typedef int bool;
 
void debug(long long x) {
  for(long long i=sizeof(x)<<3; i; i--) putchar('0'+((x>>(i-1))&1));
}
 
int main(void) {
  long long value  = 0b1111111111111111111111111111111111111111111111111111111111111110;
  long long mask = 0b0;
  long long imask = 0b1;
  long long dig = sizeof(long long)*CHAR_BIT;
  long long i,tmp;
  bool found = false;
  for(i=0; i<dig-1+1; i++) {
    if ((value & (imask << (dig-1-i))) == (mask << (dig-1-i))) {
      printf("i = %d\n",i);
      printf("value        : ");
      debug(value);
      printf("\n");
      printf("value & imask: ");
      debug(value & (imask << (dig-1-i)));
      printf("\n");
      printf("         mask: ");
      debug(mask << (dig-1-i));
      printf("\n ---\n");    	
      found = true;
      break;
    }
  }
  if (found) {
    printf("нашли: %d", dig-i-1);
  } else {
    printf("не нашли!!");
  }
  return 0;
}