Самый простой способ преобразовать десятичное число с плавающей точкой в ​​битовое представление вручную на основе IEEE 754 без использования какой-либо библиотеки

Я знаю, что есть несколько способов чтения каждого бита с плавающей запятой IEEE 754 с использованием написанных библиотек.

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

Я понимаю, как работает IEEE 754, и я просто пытаюсь его применить.

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

Если мне дано десятичное числов строкеМне нужно выяснить, чтоE и чтоM является.

получить две части: целая частьi и дробная частьf.

иметь дело сf, Я постоянноmultiple 2 и получить целую часть (либо 0 или 1) и удалить целую часть, а затем повторять, пока не станет 0

перерабатыватьi в биты. Это легко я просто постоянноmod 2 а такжеdiv 2 чтобы получить все битыi.

например, чтобы конвертироватьf часть

0,390625 * 2 = 0,781250
0,78125 * 2 = 1,56251
0,5625 * 2 = 1,1251
0,125 * 2 = 0,250
0,25 * 2 = 0,50
0,5 * 2 = 11
0

В этом случае временные биты0.390625 является0 1 1 0 0 1.

Теперь у меня есть биты дляi и дляf.

Если все биты дляi 0, то по битамf Я сдвигаю его до первого1 ушел, согласноdefault hidden 1 изM, я получилM, затем дайте значение сдвига к E, учитываяEбазовые конечно.

Еслиi не равно 0, тогда я объединяю обе части битов и вычисляю, сколько shift_right мне нужно сделать, чтобы сделать объединенные биты равными 1, а затем присваиваю это значениеE

Я думаю, все мои шаги не так. Но я чувствую это очень хлопотно.

Есть ли простой и чистый способ?

Как это делает ПК?

Ответы на вопрос(2)

Ваш ответ на вопрос