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

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

04.11.2009, 13:45. Просмотров 13800. Ответов 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
Ответы с готовыми решениями:

Получить 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
Приветствую всех форумчан. Я тут попытался реализовать программу, которая...

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
19307 / 7162 / 533
Регистрация: 30.03.2009
Сообщений: 20,042
Записей в блоге: 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
19307 / 7162 / 533
Регистрация: 30.03.2009
Сообщений: 20,042
Записей в блоге: 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
19307 / 7162 / 533
Регистрация: 30.03.2009
Сообщений: 20,042
Записей в блоге: 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
19307 / 7162 / 533
Регистрация: 30.03.2009
Сообщений: 20,042
Записей в блоге: 30
04.11.2009, 16:18 16
По первому вопросу: Формат данных с плавающей точкой
По второму вопросу: http://www.softelectro.ru/ieee754.html, но не слишком доходчиво
1
blackswan
13 / 13 / 0
Регистрация: 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
4205 / 1768 / 211
Регистрация: 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
нужна помощь в представление ВПК (в памяти компютера) тип данних double...

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

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


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

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

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