Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/14: Рейтинг темы: голосов - 14, средняя оценка - 4.71
DMGR-
0 / 0 / 0
Регистрация: 07.10.2012
Сообщений: 102
1

Двоичное число перевести в десятичное

19.04.2014, 20:33. Просмотров 2659. Ответов 13
Метки нет (Все метки)

Введите целое число в двоичной системе счисления и выведите его десятичный эквивалент.

Указание. Примените операции деления (/) и взятия по модулю (%) для отделения справа налево одного за другим «двоичного» числа.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2014, 20:33
Ответы с готовыми решениями:

Перевести двоичное число в десятичное
у меня есть например ASCII код в двоичной системе какого то символа. как...

Требуется двоично-десятичное число перевести в десятичное
Помогите пожалуйста реализовать

Преобразовать введенное с клавиатуры двоичное восьмиразрядное число в десятичное
Преобразовать введенное с клавиатуры восьмиразрядное двоичное число в...

Требуется написать прогу которая преобразуют двоичное число в десятичное
Вообщем я пишу контрольную помогите плиз кто знает с использованием цикла...

Написать программу, которая преобразует введенное с клавиатуры восьмиразрядное двоичное число в десятичное
Задание: Написать программу, которая преобразует введенное с клавиатуры...

13
LVV
116 / 103 / 39
Регистрация: 15.02.2010
Сообщений: 430
19.04.2014, 21:54 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include  <iostream>
#include <cmath>
using namespace std;
int main()
{
    int a,s=0;
    cin >> a;
for(int i=0; a; i++)
    {
        s+=int(a%10*pow(2.0,i));
        a/=10;
    }
    cout << s;
    system ("pause");
return 0;
}
1
zss
Модератор
Эксперт С++
7186 / 6681 / 4230
Регистрация: 18.12.2011
Сообщений: 17,629
Завершенные тесты: 1
19.04.2014, 22:08 3
LVV, А чем результат s отличается от исходного a?
0
LVV
116 / 103 / 39
Регистрация: 15.02.2010
Сообщений: 430
20.04.2014, 07:12 4
Цитата Сообщение от zss Посмотреть сообщение
А чем результат s отличается от исходного a?
Пользователь при вводе, например, двоичного 1111 получает на выходе десятиричное 15.
(а каков алгоритм этого получения, и какого типа переменные использовал автор решения - не важно)

Хотя, согласно условию, должно вводиться целое число, и для его преобразования должны использоваться операции / и %. Что и соблюдено.
1
IrineK
20.04.2014, 07:24
  #5

Не по теме:

Условие какое-то несуразное.
Ввод строкой был-бы естественней.

0
zss
Модератор
Эксперт С++
7186 / 6681 / 4230
Регистрация: 18.12.2011
Сообщений: 17,629
Завершенные тесты: 1
20.04.2014, 09:12 6
Цитата Сообщение от LVV Посмотреть сообщение
Пользователь при вводе, например, двоичного 1111
У Вас int a;cin>>a;
соответственно оно водится как десятичное 1111=1*10^3+1*10^2+1*10+1
0
LVV
116 / 103 / 39
Регистрация: 15.02.2010
Сообщений: 430
21.04.2014, 12:28 7
Цитата Сообщение от zss Посмотреть сообщение
У Вас int a;cin>>a;
соответственно оно водится как десятичное 1111=1*10^3+1*10^2+1*10+1
А Вы можете предложить способ ввода изначально двоичных чисел? Ну, таких, например, чтобы 11+10=101...
Для этого ведь нужно предварительно(предкомпилированно) задать собственный, отличный от стандартных (числовых-десятеричных, и строчных) тип переменных, прописать все арифметические действия для него... Новый заголовочный файл создавать вместо <iostream> какой нибудь <bitiostream> ???

По большому счету пользователь вводит лишь символы. А дальше уже дело обрабатывающей программы, как их воспринимать.
В данном случае просто происходит преобразование какого-то набора символов, который пользователь трактует как двоичное число, в стандартный, целочисленный-дестятеричный тип данных. И это, кажется, даже проще, чем использовать при вводе строковый/символьный тип данных.
0
zss
Модератор
Эксперт С++
7186 / 6681 / 4230
Регистрация: 18.12.2011
Сообщений: 17,629
Завершенные тесты: 1
21.04.2014, 13:12 8
при вводе с потока по умолчанию числа трактуются как десятичные.
Есть манипуляторы для изменения типа dec, hex,oct.
Для двоичных данных манипулятора нет.
1
LVV
116 / 103 / 39
Регистрация: 15.02.2010
Сообщений: 430
21.04.2014, 13:43 9
Цитата Сообщение от zss Посмотреть сообщение
при вводе с потока по умолчанию числа трактуются как десятичные.
Есть манипуляторы для изменения типа dec, hex,oct.
Для двоичных данных манипулятора нет.
И я о том же. Остаётся вводить либо недвоичное число (ранее представленное решение), либо строку (символы). По условию, требуется вводить число, значит первое решение (выше) более корректное.
Других способов кроме трёх представленных я не знаю. А Вы
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int main()
{
string s;
cin >> s;
int bit=0;
for(int i=s.length()-1; i>=0; i--)
    bit+=(s[i]-'0')*pow(2.0,double(s.length()-i-1));
    cout << bit << endl;
system ("pause");
 return 0;
}
или так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
char s[100];
cin >> s;
int len;
for(len=0; s[len]!='\0'; len++);
 
int bit=0;
for(int i=len-1; i>=0; i--)
    bit+=(s[i]-48)*pow(2.0,double(len-i-1));
    cout << bit << endl;
system ("pause");
 return 0;
}
0
zss
Модератор
Эксперт С++
7186 / 6681 / 4230
Регистрация: 18.12.2011
Сообщений: 17,629
Завершенные тесты: 1
21.04.2014, 13:47 10
Уж лучше тогда строку, поскольку Вы введенное число интерпретируете как последовательность
независимых битов, а не как двоичное число.
0
SatanaXIII
Супер-модератор
Эксперт С++
5773 / 2772 / 376
Регистрация: 01.11.2011
Сообщений: 6,744
Завершенные тесты: 1
21.04.2014, 13:51 11
Цитата Сообщение от LVV Посмотреть сообщение
string s;
Цитата Сообщение от LVV Посмотреть сообщение
char s[100];
А если заполнять битовое множество?
0
LVV
116 / 103 / 39
Регистрация: 15.02.2010
Сообщений: 430
21.04.2014, 14:02 12
Цитата Сообщение от SatanaXIII Посмотреть сообщение
А если заполнять битовое множество?
Предложите вариант. Было бы интересно взглянуть.
0
SatanaXIII
Супер-модератор
Эксперт С++
5773 / 2772 / 376
Регистрация: 01.11.2011
Сообщений: 6,744
Завершенные тесты: 1
21.04.2014, 14:10 13
LVV, не. Что-то мне лениво огород городить.
0
LVV
116 / 103 / 39
Регистрация: 15.02.2010
Сообщений: 430
21.04.2014, 15:27 14
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <cmath>
#include <bitset>
using namespace std;
int main()
{
bitset<100> b;
b.reset(0);
cin >> b;
 
int len;
for(len=99; b[len]!=1; len--);
 
int s=0;
for(int i=0; i<=len; i++)
   s+=int(b[i])*pow(2.0,double(i));
cout << s;  
system ("pause");
return 0;
}
1
21.04.2014, 15:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.04.2014, 15:27

Перевести десятичное число в unicode
Есть программа, вводим десятичное число до 10 000 и отображает символ. Однако,...

Как перевести десятичное число в двоичную
Зравствуйте, значит проблема у меня такая 1.Есть у меня число представленная в...

Перевести восьмеричное число в двоичное
имееться задача перевести восьмеричное число в двоичное с использованиям...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru