Как получить знак, мантиссу и показатель числа с плавающей запятой
У меня есть программа, которая работает на двух процессорах, один из которых не имеет поддержки с плавающей запятой. Итак, мне нужно выполнить вычисления с плавающей точкой с использованием фиксированной точки в этом процессоре. Для этой цели я буду использовать библиотеку эмуляции с плавающей точкой.
Мне нужно сначала извлечь знаки, мантиссы и показатели чисел с плавающей запятой на процессоре, которые поддерживают с плавающей запятой. Итак, мой вопрос, как я могу получить знак, мантиссу и экспоненту числа с плавающей запятой одинарной точности.
Следуя формату из этого рисунка,
Это то, что я сделал до сих пор, но, кроме знака, ни мантисса, ни показатель не верны. Я думаю, я что-то упустил.
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;
}