Cześć. Potrzebuję pomocy, otóż piszę program, który ma obliczyć liczbę zer między skrajnymi jedynkami. Czy moglibyście mi wytłumaczyć jaki popełniam błąd, bo np. dla 10 wychodzi mi 29. Np. dla postaci binarnej 10 (1010) results=1, ponieważ między skrajnymi jedynkami jest jedno zero.
#include <iostream>
using namespace std;
int main()
{
unsigned int mask = 0x80000000;
unsigned int mask1 = 0x00000001;
int value, results = 0;
bool ok = false;
bool ok1 = false;
cin >> value;
for (unsigned int mask = 0x80000000; mask > 0; mask = mask >> 1) {
if ((value & mask) && (not(ok))) {
ok = true;
}
}
for (unsigned int mask1 = 0x00000001; mask1 > 0; mask1 = mask1 << 1) {
if ((value & mask1) && (not(ok))) {
ok1 = true;
}
}
while (mask > mask1) {
if ((value & mask) == 0) {
results++;
}
mask = mask >> 1;
}
cout << results;
}