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