Как получить знак, мантиссу и показатель числа с плавающей запятой

У меня есть программа, которая работает на двух процессорах, один из которых не имеет поддержки с плавающей запятой. Итак, мне нужно выполнить вычисления с плавающей точкой с использованием фиксированной точки в этом процессоре. Для этой цели я буду использовать библиотеку эмуляции с плавающей точкой.

Мне нужно сначала извлечь знаки, мантиссы и показатели чисел с плавающей запятой на процессоре, которые поддерживают с плавающей запятой. Итак, мой вопрос, как я могу получить знак, мантиссу и экспоненту числа с плавающей запятой одинарной точности.

Следуя формату из этого рисунка,

 Это то, что я сделал до сих пор, но, кроме знака, ни мантисса, ни показатель не верны. Я думаю, я что-то упустил.

void getSME( int& s, int& m, int& e, float number )
{
    unsigned int* ptr = (unsigned int*)&number;

    s = *ptr >> 31;
    e = *ptr & 0x7f800000;
    e >>= 23;
    m = *ptr & 0x007fffff;
}

Ответы на вопрос(7)

Ваш ответ на вопрос