[ create a new paste ] login | about

Link: http://codepad.org/18j8X0qT    [ raw code | output | fork ]

C++, pasted on Oct 14:
#include <iostream>
using std::cout;



// поиск самой длинной битовой последовательности
int  bitseq(unsigned long a, int& e) {
     const int len = sizeof(a) << 3;
     int n = 0, p = 0;

     e = 0;
     for(int i = 0; i <= len; i++) {

         if(a & 1)
             n++;
         else {
             if(n > e) {
                p = i - n;
                e = --n;
              }
              n = 0;
         }

         if(! a)
             break;
         a >>= 1;
     }

     e = p + e;
     return p;
}



// вывод битового представление в выходной поток(консоль, файл)
void print_bin(std::ostream& hout, unsigned long a) {
     if(a != 0) {
          print_bin(hout, a >> 1);
          hout.put((char)(a & 1) + '0');
     }
}




int main(void) {
    unsigned long a = 0x3CEA1F34;

    // показать битовое представление
    print_bin(cout, a);
    cout << std::endl;

    // поиск
    int f, l;
    f = bitseq(a, l);
    if(f != l)
        cout << "first index: " << f << "\nlast  index: " << l << '\n';
    return 0;
}


Output:
1
2
3
111100111010100001111100110100
first index: 8
last  index: 12


Create a new paste based on this one


Comments: