Вот программка, по условию она должна считать количество битов "00" (пар нолей) целого числа. Но когда ввожу тестовое число 2565989889 то ответ не правильный. Может ли кто-то подсказать с чем это связано и как следует подкоректировать программу. Вот код :
#include <iostream>
#include <cstdlib>
#include <stdio.h>
#include <conio.h>
using namespace std;
void print_bits (unsigned n)
{
int bit;
for (bit = sizeof(unsigned)*8 - 1; bit >= 0; bit--)
{
((n >> bit) & 01) ? putchar ('1') : putchar ('0');
if (bit % 4 == 0) putchar (' ');
}
}
main ()
{
char con;
do
{
unsigned n;
int count = 0;
cout << "Input int" << endl;
cin >> n;
print_bits (n);
n = ~ n;
do
{
if (n & 01)
{
n >>= 1;
}
if (n & 01)
{
count++;
n >>= 1;
}
else n >>= 1;
}
while (n != '\0');
cout<<endl;
cout << "Number of *00* = " << count << endl;
cout <<"Continue? (y/n)";
cin>>con;
}
while (con =='y');
system ("PAUSE");
return 0;
}