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

Перевод из двоичного счисления в десятичное - C++

Восстановить пароль Регистрация
 
Артем81
0 / 0 / 0
Регистрация: 03.06.2014
Сообщений: 2
03.06.2014, 16:03     Перевод из двоичного счисления в десятичное #1
Здравствуйте. Подскажите, почему так получается: при числе, состоящем из менее чем десяти знаков, программка нормально переводит из двоичного в десятичное, если знаков более, чем десять - выдает всякую фигню?

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <iostream>
#include <math.h>
 
using namespace std;
 
int main()
{
    cout << "input dvoichnoe chislo " << endl;
    int number;// number - двоичное число, которое будем переводить в десятичное.
    cin >> number;
 
    int counter; // - переменная для определения количества цифр (знаков).
 
    int number0 = number;//Сохраним здесь введенное двоичное число, чтобы вычислить количество знаков.
    counter = 0;
    do
    {
        number0 = number0 / 10;
        counter++;
    }
    while (number0 >= 1);
    //Теперь переменная counter содержит количество цифр (знаков).
 
    //Вводим переменную varnumber, которая будет являться остатком от деления числа
    //number на 10 в заранее определенной степени.
    int varnumber;
 
    //Вводим переменную number10, которая является результатом вычисления.
    int number10;
    number10 = 0;
 
    int n; // - переменная, определяющая степень, в которую возводится число 2 на данном этапе расчета.
    n = 0;
 
 
 
    while (counter >= 1)
    {
       varnumber = number % 10;
 
    //При этом само число number уменьшаем на порядок.
    number = number / 10;
 
    //перевод из двоичной в десятичную систему счисления осуществляем суммированием чисел, полученных
    // в результате умножения varnumber на 2 в заранее определенной степени, с учетом counter.
 
    number10 = number10 + varnumber * pow (2, n);
 
    counter = counter - 1;
 
    n = n + 1;
    }
 
 
 
    cout << "Your number is: " << number10 << endl;
    return 0;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2014, 16:03     Перевод из двоичного счисления в десятичное
Посмотрите здесь:

C++ Перевод длинного двоичного числа в десятичную СС
C++ Перевод натурального числа из десятичной системы счисления в систему счисления по основанию
Перевод целого десятичного числа в строку и обратно в десятичное число C++
C++ Перевод чисел из двоичной системы счисления в систему счисления кратной степеням двойки и обратно
Перевод числа из двоично-десятичного в десятичное C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
intern
 Аватар для intern
15 / 15 / 6
Регистрация: 30.03.2014
Сообщений: 67
Завершенные тесты: 1
03.06.2014, 17:08     Перевод из двоичного счисления в десятичное #2
Вы считываете входные данные в знаковую переменную типа int.
Десятичное 10000000000 - больше ее максимально допустимого значения.
randy92
7 / 7 / 2
Регистрация: 23.04.2014
Сообщений: 59
03.06.2014, 17:13     Перевод из двоичного счисления в десятичное #3
Вместо int используй unsigned long
ExModE
2 / 2 / 2
Регистрация: 04.03.2011
Сообщений: 27
03.06.2014, 18:10     Перевод из двоичного счисления в десятичное #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
randy92, unsigned long long
Артем81
0 / 0 / 0
Регистрация: 03.06.2014
Сообщений: 2
04.06.2014, 07:31  [ТС]     Перевод из двоичного счисления в десятичное #5
ExModE, спасибо. заработало.
Yandex
Объявления
04.06.2014, 07:31     Перевод из двоичного счисления в десятичное
Ответ Создать тему
Опции темы

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