C++: Как решить задачу про мантиссу и знак float?

Здравствуйте, есть задачка: Для типа данных float обеспечить возможность доступа как к числу целиком, так и отдельно к его знаку и мантиссе. Собственно вопрос в том как это решить,мои попытки не увенчались успехом,к сожалению.Заранее спасибо.
  • Вопрос задан
  • 3758 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
,мои попытки не увенчались успехом,к сожалению

не очень-то информативно. Что за попытки? Что именно не увенчалось?

Смотрим сюда и пишем:

struct float_parts {
    unsigned fraction:23;
    unsigned exponent:8;
    unsigned sign:1;
};

union float_and_parts {
    float f;
    struct float_parts parts;
};

UPD: поправил для little endian.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
difiso
@difiso
В параллельной вселенной я космонавт
В файле math.h есть функции frexp c cигнатурами
float frexp( float num, int *exp);
double frexp( double num, int *exp);
long double frexp( long double num, int *exp);

Пользовать так:
double num, r;
int exp;
num = 6.0;
r = frexp( num, &exp);
printf("The matissa returned is::%lf",r);
printf("The exponent value stored in exp is::%d",exp);

Результат:
The matissa returned is::0.750000
The exponent value stored in exp is::3

За работоспособность примера не ручаюсь (копипастен из интернетов по запросу How to get mantissa c++).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы