Форум программистов, компьютерный форум CyberForum.ru

Программа подсчёта битов - C++

Восстановить пароль Регистрация
 
Batarchuk
0 / 0 / 0
Регистрация: 27.03.2011
Сообщений: 28
31.03.2011, 00:56     Программа подсчёта битов #1
Добрый вечер, кто не спит! Скажите пожалуйста, я вот написал программку, по условию она должна считать количество битов "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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2011, 00:56     Программа подсчёта битов
Посмотрите здесь:

Программа, которая считает количество битов. C++
НЕ работает программа подсчёта! C++
C++ Программа для подсчёта суммы 10 вводимых чисел
C++ Программа на C++ для подсчёта суммы ряда,
Нужна программа на C++ для подсчёта ряда C++
C++ Программа подсчёта букв
C++ Программа подсчёта монет
C++ Программа подсчёта количества символов, букв, слов и предожений

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
31.03.2011, 02:09     Программа подсчёта битов #2
Оверфлоу?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <ctime>
 
size_t CountDoubleZeroes(long long int number) {
  size_t result = 0;
  while (number != 0) {
    if ((number & 3) == 0) {
      ++result;
      number >>= 1;
    }
    number >>= 1;
  }
  return result;
}
 
void PrintBinary(long long int number) {
  if (number != 0) {
    printf("%Ld", number & 1);
    PrintBinary(number >> 1);
  }
}
 
int main(int argc, char *argv[]) {
  srand(time(NULL));
  long long int number = rand();
  PrintBinary(number);
  printf("\n%Ld has %d double zeroes.\n", number,  CountDoubleZeroes(number));
  return 0;
}
Batarchuk
0 / 0 / 0
Регистрация: 27.03.2011
Сообщений: 28
31.03.2011, 17:01  [ТС]     Программа подсчёта битов #3
Спасибо, а что такое "Оверфлоу"?
Yandex
Объявления
31.03.2011, 17:01     Программа подсчёта битов
Ответ Создать тему
Опции темы

Текущее время: 21:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru