Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 17.09.2018
Сообщений: 21
1

Перевод double из двоичного в десятичную

16.11.2018, 18:24. Показов 3369. Ответов 9

Author24 — интернет-сервис помощи студентам
Допустим с клавиатуры мы вводим 101.1 и на выходе получаем 5.5. Как реализовать не пойму. Прошу помощи...
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.11.2018, 18:24
Ответы с готовыми решениями:

Перевод длинного двоичного числа в десятичную СС
Как можно перевести число из двоичной системы счисления в десятичную ели число длиной в 100-300...

Перевод из двоичного в десятичную запись число
Дана строка, изображающая двоичную запись целого положительного числа. Вывести строку, изображающую...

Перевод двоичного дробного числа в десятичную систему счисления
Как на TASM перевести десятичную дробь из двоичной в десятичную систему счисления?

Вывести строку, изображающую десятичную запись двоичного числа.
Дана строка, изображающая двоичную запись целого положительного числа, занимающего 8...

9
Модератор
Эксперт функциональных языков программированияЭксперт Python
37331 / 20763 / 4275
Регистрация: 12.02.2012
Сообщений: 34,168
Записей в блоге: 14
16.11.2018, 18:30 2
Переводи отдельно целую и дробную часть, а потом объединяй.
0
0 / 0 / 0
Регистрация: 17.09.2018
Сообщений: 21
16.11.2018, 19:10  [ТС] 3
Я не совсем понимаю,как это можно сделать.
0
1355 / 854 / 365
Регистрация: 26.02.2015
Сообщений: 3,806
16.11.2018, 19:18 4
https://www.cyberforum.ru/cgi-bin/latex.cgi?{20}_{10}=2*{10}^{1}+0*{10}^{0}=2*10+0=20<br />
{1010}_{2}=1*{2}^{3}+0*{2}^{2}+1*{2}^{1}+0*{2}^{0}=8+2=10<br />
{101,1}_{2}=1*{2}^{2}+0*{2}^{1}+1*{2}^{0}+1*{2}^{-1}=4+0+1+\frac{1}{2}=5,5
0
0 / 0 / 0
Регистрация: 17.09.2018
Сообщений: 21
16.11.2018, 19:26  [ТС] 5
Как числа переводятся я знаю. Я не могу понять,как написать цикл,который будет переводить любое двоичное число с плавающей точкой. Чтобы возвести каждый бит в степень,мне нужно его отдельно взять,а как это сделать с double,если деление на 10 или взятие остатка от деления не работают так же,как при переводе целых чисел.
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
37331 / 20763 / 4275
Регистрация: 12.02.2012
Сообщений: 34,168
Записей в блоге: 14
16.11.2018, 19:56 6
Лучший ответ Сообщение было отмечено Fraidzilla как решение

Решение

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
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
double b2d(char *S)
{
    double n=0,f=0,p=0.5;
    int i,flg=0;
    for (i=0; i<strlen(S); i++)
    {
        if (S[i]=='.') 
           flg=1;
        else
        {
           if (flg)
           {
             if (S[i]=='1') f=f+p;      
             p=p*0.5;
           }
           else
           {
              n=n*2; 
              if (S[i]=='1') n=n+1;
           } 
        }        
    }
    return n+f;
}        
 
int main(int argc, char *argv[])
{
    
    cout << b2d("101.01") << endl;
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
1
0 / 0 / 0
Регистрация: 17.09.2018
Сообщений: 21
16.11.2018, 23:35  [ТС] 7
Всё хорошо,только ввод с клавиатуры не реализован...

Добавлено через 6 минут
Возможна ли реализация без использования строк? Как-то можно это сделать как в IEEE 754?
Просто я не понимаю,как написать код по IEEE 754
0
1355 / 854 / 365
Регистрация: 26.02.2015
Сообщений: 3,806
17.11.2018, 02:33 8
Fraidzilla, IEEE 754 запрещает использовать строки? Он описывает формат представления и подобные вещи, а не говорит, как его реализовывать.
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
37331 / 20763 / 4275
Регистрация: 12.02.2012
Сообщений: 34,168
Записей в блоге: 14
17.11.2018, 09:29 9
Цитата Сообщение от Fraidzilla Посмотреть сообщение
Возможна ли реализация без использования строк?
- конечно. Читай символ за символом с клавиатуры, и обрабатывай в соответствии с приведенным алгоритмом. Результат в любом случае будет соответствовать IEEE 754.
0
0 / 0 / 0
Регистрация: 17.09.2018
Сообщений: 21
17.11.2018, 16:53  [ТС] 10
хм,спасибо большое
0
17.11.2018, 16:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.11.2018, 16:53
Помогаю со студенческими работами здесь

double в десятичную систему
.... double start; .... unsigned short int yars; ..... double percent; ... for(int i = 0; i...

Вывод двоичного представления из double
Hello everyone :-* Как мне немного переделать вот такую задачку ? int num = 100; ...

Перевод из двоичного в десятичное
Как исправить ошибку? static public string ConvertToOcta(string input_bin) { ...

Ошибки error C2296: -: недопустимо, левый операнд имеет тип "double (__cdecl *)(double,double,double
Думаю из-за polp #include&lt;iostream&gt; #include&lt;cmath&gt; #include&lt;cstdlib&gt; using namespace std;...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru