C - как хранить биты при конвертации в IEEE с плавающей запятой - PullRequest
0 голосов
/ 24 сентября 2018

Мне поручено закодировать функцию (в C), которая преобразует значение с плавающей запятой в стандарт IEEE для представления с плавающей запятой.Я думаю, что понимаю, как это сделать на бумаге, но когда я пытаюсь кодировать его, я не понимаю, как сохранить битовый шаблон.

Так что, если у меня есть значение 3948.125, которое равно 111101101100.001,так как я умножаю .125 на 2, пока он не закончится, как мне сохранить 0 или 1, пока я иду?

0.125 x 2 = 0.25    0
0.25 x 2 = 0.5      0
0.5 x 2 = 1         1
= 0.001

В конце значение должно быть возвращено как int.

Вот часть кода для преобразования десятичной части

while(decimal!=0) {
 decimal = decimal * 2;
 if (decimal > 1) {
     //here i would like to store a 1 somewhere
     decimal = decimal - 1;
 } 
 else {
     //I would like to store a 0 somewhere
 }
}

Для другого примера, вход в программу будет 18,113, а вывод - 18,0937500000.Я должен преобразовать 32-битное значение с плавающей запятой и вывести целочисленное представление, которое использует только 15 бит, 5 бит для exp и 9 бит для frac.

Я понимаю, как это сделать на бумаге.Когда я пытаюсь его закодировать, меня смущает то, как я храню биты при их вычислении.Предоставленный код предназначен только для преобразования десятичной части входных данных в двоичный.

...