Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 93, средняя оценка - 4.91
Hayk
2 / 1 / 1
Регистрация: 28.08.2009
Сообщений: 16
#1

2-ичное представление числа типа double или float? - C++

04.11.2009, 13:45. Просмотров 13174. Ответов 18
Метки нет (Все метки)

помогите разобратся,,,, плиз))
double a=1991.829;
a==01000000 10011111 00011111 01010000 11100101 01100000 01000001 10001001;
скажите пожалуйста как число а преврашается вот в это?(какой бит чему ответственен?)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2009, 13:45
Я подобрал для вас темы с готовыми решениями и ответами на вопрос 2-ичное представление числа типа double или float? (C++):

Получить q ичное представление числа
Даны натуральные числа p и q(q>=2).Получить q-ичное представление числа p в...

Как проверить вводилось ли число (типа double или float) в консоль
Как проверить вводилось ли число (типа double или float) в консоль?

Преобразовать 2 числа int в 1 число float(double) | double int1.int2
Всем привет. Изучая азы C++, столкнулся с такой проблемой. Есть два значения...

Работа с переменными типа float и double
Доброго времени суток всем, даммеры и госпопрограммеры :D Пытался я на днях...

Работа с переменными типа float и double
Приветствую всех форумчан. Я тут попытался реализовать программу, которая...

Представление в памяти компьютера типа double
нужна помощь в представление ВПК (в памяти компютера) тип данних double...

18
Iworb
анимешник++
93 / 60 / 7
Регистрация: 03.11.2009
Сообщений: 424
04.11.2009, 14:09 #2
или мне кажется или double означает по умолчанию double int, a число а - с десятичной точкой (тип float)

Добавлено через 20 секунд
наверно из-за этого и получается такое

Добавлено через 1 минуту
11111000111,110101 - вот правильный результат

Добавлено через 2 минуты
вот этому числу соответствует 4 байта(float)
вашему числу соответствует 8 байт, как и полагается типу double
вот где-то тут и загвоздка
0
Hayk
2 / 1 / 1
Регистрация: 28.08.2009
Сообщений: 16
04.11.2009, 14:13  [ТС] #3
Цитата Сообщение от Iworb Посмотреть сообщение
или мне кажется или double означает по умолчанию double int, a число а - с десятичной точкой (тип float)

Добавлено через 20 секунд
наверно из-за этого и получается такое

Добавлено через 1 минуту
11111000111,110101 - вот правильный результат
не брат, ты написал как 1991,829 предстовляется в 2-ичной форме, я написал как число дабл читается в С++, ихочу знать почему именно так
0
ООП
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 13
04.11.2009, 14:14 #4
Если не ошибаюсь, то это для сопроцессора тип.
0
Hayk
2 / 1 / 1
Регистрация: 28.08.2009
Сообщений: 16
04.11.2009, 14:21  [ТС] #5
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
#include <iostream>
using namespace std;
 
union bits
{
    bits(double n);
    void show_bits();
    double d;
    unsigned char c[sizeof(double)];
};
bits::bits(double n)
{
    d=n;
}
void bits::show_bits()
{
    int i,j;
    for(j=sizeof(double)-1;j>=0;j--)
    {
        cout<<"двоичное представление байта "<<j<<":";
        for(i=128;i;i>>=1)
        {
            if(i & c[j])
            {
                cout<<"1";
            }
            else
            {
                cout<<"0";
            }
        }
        cout<<endl;
    }
}
int main()
{
    setlocale(LC_ALL,"Russian");
    bits ob(1991.829);
    ob.show_bits();
    return 0;
    system("pause");
}
вот моя прога

двоичное представление байта 7:01000000
двоичное представление байта 6:10011111
двоичное представление байта 5:00011111
двоичное представление байта 4:01010000
двоичное представление байта 3:11100101
двоичное представление байта 2:01100000
двоичное представление байта 1:01000001
двоичное представление байта 0:10001001
Press any key to continue . . .

вот ответ,,,,,вопрос!!! как так получилась?))
0
Iworb
анимешник++
93 / 60 / 7
Регистрация: 03.11.2009
Сообщений: 424
04.11.2009, 14:39 #6
ну вот, оно тебе КАЖДУЮ цифру представила в двоичном представление байта + точка десятичная

Добавлено через 45 секунд
а вот как получилось - это уже не ко мне =(
0
Hayk
2 / 1 / 1
Регистрация: 28.08.2009
Сообщений: 16
04.11.2009, 15:10  [ТС] #7
Цитата Сообщение от Iworb Посмотреть сообщение
ну вот, оно тебе КАЖДУЮ цифру представила в двоичном представление байта + точка десятичная
не друг я и этот вариант проверял это не так

Добавлено через 29 минут
кто нибудь хелп ми
0
temni
0 / 0 / 0
Регистрация: 25.10.2009
Сообщений: 22
04.11.2009, 15:21 #8
http://www.rus-edu.bg/edu/online/inf/bookinf/theory/chapter4/1_4.html

Добавлено через 6 минут
если вкратце - берёшь десятичную часть дроби, умножаешь её на два, записываешь целую часть произведения в мозг, дробную часть получившегося умножаешь на два, и опять записывешь целую часть. и так много раз (в зависимости от того, какая точность нужна). потом берёшь целую часть дроби и переводишь её в двоичную систему обычным способом (делением в столбик). а потом записываешь ответы через запятую
0
Hayk
2 / 1 / 1
Регистрация: 28.08.2009
Сообщений: 16
04.11.2009, 15:53  [ТС] #9
Цитата Сообщение от temni Посмотреть сообщение
http://www.rus-edu.bg/edu/online/inf/bookinf/theory/chapter4/1_4.html

Добавлено через 6 минут
если вкратце - берёшь десятичную часть дроби, умножаешь её на два, записываешь целую часть произведения в мозг, дробную часть получившегося умножаешь на два, и опять записывешь целую часть. и так много раз (в зависимости от того, какая точность нужна). потом берёшь целую часть дроби и переводишь её в двоичную систему обычным способом (делением в столбик). а потом записываешь ответы через запятую
так шитать я тоже умею))) ты смотри по више, там я кокретизировал вопрос

Добавлено через 23 минуты
дайте точный ответ пожалуйста
0
Evg
Эксперт CАвтор FAQ
18938 / 6899 / 513
Регистрация: 30.03.2009
Сообщений: 19,436
Записей в блоге: 30
04.11.2009, 15:57 #10
Цитата Сообщение от Hayk Посмотреть сообщение
ты смотри по више, там я кокретизировал вопрос
Не знаю, что ты там конкретизировал, но я так и не понял, ты хочешь понять, как вообще плавающие числа в двоичной системе представляются или как они хранятся в машине

Можешь пока тут почитать http://ru.wikipedia.org/wiki/Плавающая_запятая
Я вообще хотел faq по этому вопросу написать, но никак руки не доходят. А объяснить на пальцах быстро не получится
1
Hayk
2 / 1 / 1
Регистрация: 28.08.2009
Сообщений: 16
04.11.2009, 16:00  [ТС] #11
Цитата Сообщение от Evg Посмотреть сообщение
Не знаю, что ты там конкретизировал, но я так и не понял, ты хочешь понять, как вообще плавающие числа в двоичной системе представляются или как они хранятся в машине

Можешь пока тут почитать http://ru.wikipedia.org/wiki/Плавающая_запятая
Я вообще хотел faq по этому вопросу написать, но никак руки не доходят. А объяснить на пальцах быстро не получится
спсб вопрос был про цифр с плавающей точкой
0
Evg
Эксперт CАвтор FAQ
18938 / 6899 / 513
Регистрация: 30.03.2009
Сообщений: 19,436
Записей в блоге: 30
04.11.2009, 16:01 #12
Цитата Сообщение от Hayk Посмотреть сообщение
спсб вопрос был про цифр с плавающей точкой
Ты можешь внятно и членораздельно задать свой вопрос?
0
Hayk
2 / 1 / 1
Регистрация: 28.08.2009
Сообщений: 16
04.11.2009, 16:06  [ТС] #13
Цитата Сообщение от Evg Посмотреть сообщение
Ты можешь внятно и членораздельно задать свой вопрос?
как число типа дабл пишется в двоичной форме(по кокому алгоритму делается перевод?)
0
Evg
Эксперт CАвтор FAQ
18938 / 6899 / 513
Регистрация: 30.03.2009
Сообщений: 19,436
Записей в блоге: 30
04.11.2009, 16:13 #14
Цитата Сообщение от Hayk Посмотреть сообщение
как число типа дабл пишется в двоичной форме(по кокому алгоритму делается перевод?)
Есть два совершенно непересекающихся вопроса:
1. Двоичная запись действительных чисел (грубо говоря, как записывать на листочке)
2. Представление действитеельных чисел в машине. Запись числа на листочке НЕ совпадает с машинным представленим (хотя для целых чисел они, условно, совпадают)

С ходу что-то ссылки на первое и второе не найду. Хотя и на форуме они встречались не раз, и объяснения даже какие-то были
0
Hayk
2 / 1 / 1
Регистрация: 28.08.2009
Сообщений: 16
04.11.2009, 16:16  [ТС] #15
Цитата Сообщение от Evg Посмотреть сообщение
Есть два совершенно непересекающихся вопроса:
1. Двоичная запись действительных чисел (грубо говоря, как записывать на листочке)
2. Представление действитеельных чисел в машине. Запись числа на листочке НЕ совпадает с машинным представленим (хотя для целых чисел они, условно, совпадают)

С ходу что-то ссылки на первое и второе не найду. Хотя и на форуме они встречались не раз, и объяснения даже какие-то были
2.
0
Evg
Эксперт CАвтор FAQ
18938 / 6899 / 513
Регистрация: 30.03.2009
Сообщений: 19,436
Записей в блоге: 30
04.11.2009, 16:18 #16
По первому вопросу: http://www.cyberforum.ru/low-level/thread30984.html
По второму вопросу: http://www.softelectro.ru/ieee754.html, но не слишком доходчиво
1
blackswan
13 / 13 / 1
Регистрация: 08.07.2009
Сообщений: 61
04.11.2009, 17:41 #17
вспомню свои знания, например, тип с плавающей запятой одинарной точности, он же float (32 бита всего) представлен в виде трёх компонент, которые идут в представлении в таком порядке: знак числа (1 бит), порядок числа (8 бит), мантисса числа (23 бита).
Знак числа может быть 0 или 1, если 1, то отрицательный.
Порядок числа - хранит степень 10-ти, на которую надо умножить мантиссу, чтоб получить само число, порядок может принимать значения от -128 до 127, но насколько я помню, в х86 принято хранить его со смещением, т.е. к настоящему порядку прибавляется 128 и он хранится только в положительном виде.
Мантисса - хранит значимые цифры числа, причем в данном случае в нормализованном виде, т.е. в виде наибольшей десятичной дроби, меньшей 1. Но так как такая последовательность всегда будет начинаться с двоичной единицы, то для экономии и увеличения разрядности её "сдвигают" в первый целый разряд и как бы подразумевают, а первой в последовательности мантиссы становится вторая двоичная цифра (это может быть 0 и 1). Да, и еще отрицательные числа хранятся в дополнительном коде. С double то же самое, только размер порядка и мантиссы побольше, кажется 11 и 52 соответственно.
0
AngeL (c)
3 / 3 / 1
Регистрация: 05.09.2008
Сообщений: 6
07.12.2009, 12:07 #18
Читай здесь
Подробнее нужно?
И зачем тебе? =) Ты часом не физтех?
0
taras atavin
4204 / 1763 / 212
Регистрация: 24.11.2009
Сообщений: 27,565
09.06.2011, 09:08 #19
Цитата Сообщение от Iworb Посмотреть сообщение
double означает по умолчанию double int
C++
1
double
по дефолу соответсвует одной из реализаций
Код
real8
- восьмибайтному вещественном утипу, у которого и мантисса, и порядок имеют знаки.

Добавлено через 1 минуту
Цитата Сообщение от Iworb Посмотреть сообщение
11111000111,110101
В памяти запятая не ставится, а подразумевается, а ТВ запостил сырые биты.
0
09.06.2011, 09:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2011, 09:08
Привет! Вот еще темы с решениями:

Проверка на корректность ввода типа double и float
Как сделать, чтобы выводила ошибку при некорректном вводе?

Внутреннее представление типа Double через Long
Привет. Для оптимизации работы одного вычислительного алгоритма потребовалось...

Неправильно отображает внутреннее представление типа double
Тип int отображается верно, а вот при double ошибка Для числа 5: int :...

Сделать вывод типа float в шаблоне вместо double
Здравствуйте,уважаемые пользователи.Недавно начал знакомится с шаблонами, и...


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

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

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