Алгоритм формирования 32-битных чисел с плав. точкой из полученных 16-ти битных integer - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Прошу Вас помочь с задачей. Уповаю на Вас! Наш контроллер (НК) опрашивает некое устройство (НУ) по неважно какому протоколу. В НУ адресное пространство реализовано в виде 16-ти битных регистров, но в них хранятся 32-х битные числа с плавающей точкой в формате IEEE 754. В результате запроса НК получает десять 16ти битных integer. Необходимо реализовать алгоритм формирования 32-битных чисел с плав. точкой из полученных 16-ти битных integer. Алгоритм реализовать на языке ST (можно pascal, Delphi, basic, VBA, С). Контрольный пример для проверки: Адресное пространство НУ - R1, R2, R3, R4, …R10. Переменная Float1 = 1234.5678 располагается в R1 и R2, в двоичном представлении будет 100 0100 1001 1010 0101 0010 0010 1011, а в 16-тиричном 449A522B. То есть результат запроса будет R1=100 0100 1001 1010(449A), R2=0101 0010 0010 1011(522B) Переменная Float2 = 987654321 располагается в R3, R4; Переменная Float3 = 0 располагается в R5, R6; Переменная Float4 = NAN располагается в R7, R8; Переменная Float5 = 1234.5678 располагается в R9, R10;

Решение задачи: «Алгоритм формирования 32-битных чисел с плав. точкой из полученных 16-ти битных integer»

textual
Листинг программы
unsigned short input_16bit1, input_16bit2;
float output_float32;
 
union
{
  struct
  {
    unsigned short hi, lo;
  } s;
  float f;
} u;
 
u.s.hi = input_16bit1;
u.s.lo = input_16bit2;
output_float32 = u.s.f;

Объяснение кода листинга программы

  1. Объявляются две переменные типа unsigned short: input_16bit1 и input_16bit2.
  2. Объявляется переменная типа float: output_float32.
  3. Объявляется union с именем u.
  4. В структуре union, в поле s, указываются названия и значения переменных hi и lo.
  5. Значения переменных hi и lo устанавливаются равными input_16bit1 и input_16bit2 соответственно.
  6. Значение переменной f устанавливается равным значению переменных hi и lo.
  7. Значение переменной output_float32 устанавливается равным значению переменной f.

Оцени полезность:

8   голосов , оценка 3.75 из 5
Похожие ответы