fork download
  1. #include <stdio.h>
  2. #include <limits.h>
  3. #include <stdlib.h>
  4. #define false 0
  5. #define true 1
  6. typedef int bool;
  7.  
  8. void debug(long long x) {
  9. for(long long i=sizeof(x)<<3; i; i--) putchar('0'+((x>>(i-1))&1));
  10. }
  11.  
  12. int main(void) {
  13. long long value = 0b1111111111111111111111111111111111111111111111111111111111111110;
  14. long long mask = 0b0;
  15. long long imask = 0b1;
  16. long long dig = sizeof(long long)*CHAR_BIT;
  17. long long i,tmp;
  18. bool found = false;
  19. for(i=0; i<dig-1+1; i++) {
  20. if ((value & (imask << (dig-1-i))) == (mask << (dig-1-i))) {
  21. printf("i = %d\n",i);
  22. printf("value : ");
  23. debug(value);
  24. printf("\n");
  25. printf("value & imask: ");
  26. debug(value & (imask << (dig-1-i)));
  27. printf("\n");
  28. printf(" mask: ");
  29. debug(mask << (dig-1-i));
  30. printf("\n ---\n");
  31. found = true;
  32. break;
  33. }
  34. }
  35. if (found) {
  36. printf("нашли: %d", dig-i-1);
  37. } else {
  38. printf("не нашли!!");
  39. }
  40. return 0;
  41. }
Success #stdin #stdout 0s 4288KB
stdin
Standard input is empty
stdout
i = 63
value        : 1111111111111111111111111111111111111111111111111111111111111110
value & imask: 0000000000000000000000000000000000000000000000000000000000000000
         mask: 0000000000000000000000000000000000000000000000000000000000000000
 ---
нашли: 0