#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;
}