fork download
  1. #include <stdio.h>
  2. #include <limits.h>
  3. #include <stdlib.h>
  4.  
  5. #define false 0
  6. #define true 1
  7. typedef int bool;
  8.  
  9. void debug(unsigned x) {
  10. for(int i=sizeof(x)<<3; i; i--) putchar('0'+((x>>(i-1))&1));
  11. }
  12.  
  13. int main(void) {
  14. unsigned value = 0b0000000000001101101010110110;
  15. unsigned mask = 0b11011;
  16. unsigned imask = 0b11111;
  17. unsigned dig = sizeof(unsigned)*CHAR_BIT;
  18. unsigned i,tmp;
  19. bool found = false;
  20. for(i=0; i<dig-5; 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-5-i)));
  27. printf("\n");
  28. printf(" mask: ");
  29. debug(mask << (dig-5-i));
  30. printf("\n ---\n");
  31. if ((value & (imask << (dig-5-i))) == (mask << (dig-5-i))) {
  32. found = true;
  33. break;
  34. }
  35. }
  36. if (found) {
  37. printf("нашли: %d", dig-i-1);
  38. } else {
  39. printf("не нашли!!");
  40. }
  41. return 0;
  42. }
  43.  
Success #stdin #stdout 0s 4396KB
stdin
Standard input is empty
stdout
i = 0
value        : 00000000000000001101101010110110
value & imask: 00000000000000000000000000000000
         mask: 11011000000000000000000000000000
 ---
i = 1
value        : 00000000000000001101101010110110
value & imask: 00000000000000000000000000000000
         mask: 01101100000000000000000000000000
 ---
i = 2
value        : 00000000000000001101101010110110
value & imask: 00000000000000000000000000000000
         mask: 00110110000000000000000000000000
 ---
i = 3
value        : 00000000000000001101101010110110
value & imask: 00000000000000000000000000000000
         mask: 00011011000000000000000000000000
 ---
i = 4
value        : 00000000000000001101101010110110
value & imask: 00000000000000000000000000000000
         mask: 00001101100000000000000000000000
 ---
i = 5
value        : 00000000000000001101101010110110
value & imask: 00000000000000000000000000000000
         mask: 00000110110000000000000000000000
 ---
i = 6
value        : 00000000000000001101101010110110
value & imask: 00000000000000000000000000000000
         mask: 00000011011000000000000000000000
 ---
i = 7
value        : 00000000000000001101101010110110
value & imask: 00000000000000000000000000000000
         mask: 00000001101100000000000000000000
 ---
i = 8
value        : 00000000000000001101101010110110
value & imask: 00000000000000000000000000000000
         mask: 00000000110110000000000000000000
 ---
i = 9
value        : 00000000000000001101101010110110
value & imask: 00000000000000000000000000000000
         mask: 00000000011011000000000000000000
 ---
i = 10
value        : 00000000000000001101101010110110
value & imask: 00000000000000000000000000000000
         mask: 00000000001101100000000000000000
 ---
i = 11
value        : 00000000000000001101101010110110
value & imask: 00000000000000000000000000000000
         mask: 00000000000110110000000000000000
 ---
i = 12
value        : 00000000000000001101101010110110
value & imask: 00000000000000001000000000000000
         mask: 00000000000011011000000000000000
 ---
i = 13
value        : 00000000000000001101101010110110
value & imask: 00000000000000001100000000000000
         mask: 00000000000001101100000000000000
 ---
i = 14
value        : 00000000000000001101101010110110
value & imask: 00000000000000001100000000000000
         mask: 00000000000000110110000000000000
 ---
i = 15
value        : 00000000000000001101101010110110
value & imask: 00000000000000001101000000000000
         mask: 00000000000000011011000000000000
 ---
i = 16
value        : 00000000000000001101101010110110
value & imask: 00000000000000001101100000000000
         mask: 00000000000000001101100000000000
 ---
нашли: 15