Dimitri
Новичок
Получить вещественное из 4х байт (формат IEEE-754)
Нужно получить из данных вещественное число (по формуле ±MANTISSA x 2EXP).
На входе имеем 4 байта: 0xC1,0x48,0x00,0x00
После прочтения теории немного стал понятен алгоритм преобразования:
1. первый бит определяет знак числа
2. следующие (8 бит - 127) являются экспонентой
3. оставшиеся биты - мантисса
4. на основе экспоненты выделяем из мантиссы целую и дробную часть
Я совсем не имел дела с битовыми операциями, поэтому прошу помощи. Пробовал преобразовать 4 байта в последовательность бит через decbin и выбирать нужные биты через строковые функции. Хуже не придумаешь ((
Еще вопрос. Я получил 1100.1000000000000000, где
Целая часть : (1х23)+(1х22)+(0х21)+(0х20)=12. (читать: 1 x 2 в третей степени... не нашел нужного форматирования)
Дробная часть: (1х2-1)+(0х2-2)+(0х2-3)+…=0.5.
Значение целой части получил через bindec, а при вычислении дробной части не нашел ничего лучшего, чем в цикле возводить каждый бит в нужную степень через pow(2, -1...). В общем, нужна помощь.
Спасибо.
Нужно получить из данных вещественное число (по формуле ±MANTISSA x 2EXP).
На входе имеем 4 байта: 0xC1,0x48,0x00,0x00
После прочтения теории немного стал понятен алгоритм преобразования:
1. первый бит определяет знак числа
2. следующие (8 бит - 127) являются экспонентой
3. оставшиеся биты - мантисса
4. на основе экспоненты выделяем из мантиссы целую и дробную часть
Я совсем не имел дела с битовыми операциями, поэтому прошу помощи. Пробовал преобразовать 4 байта в последовательность бит через decbin и выбирать нужные биты через строковые функции. Хуже не придумаешь ((
Еще вопрос. Я получил 1100.1000000000000000, где
Целая часть : (1х23)+(1х22)+(0х21)+(0х20)=12. (читать: 1 x 2 в третей степени... не нашел нужного форматирования)
Дробная часть: (1х2-1)+(0х2-2)+(0х2-3)+…=0.5.
Значение целой части получил через bindec, а при вычислении дробной части не нашел ничего лучшего, чем в цикле возводить каждый бит в нужную степень через pow(2, -1...). В общем, нужна помощь.
Спасибо.