Вниз
Скачать: CL | DM;

FloatToBin   Найти похожие ветки 

← →
зашел спросить   (2010-04-22 15:16) [0]

Подскажите, по какому алгоритму выполняется сабжевое преобразование?
Заранее благодарен за ответ.


← →
MBo ©   (2010-04-22 15:17) [1]

А что такое FloatToBin ?


← →
12 ©   (2010-04-22 15:21) [2]

http://www.tspu.tula.ru/ivt/old_site/umr/timoi/solovieva/Computer/chisl_vpl.htm


← →
зашел спросить   (2010-04-22 16:04) [3]


> А что такое FloatToBin ?

это предполагаемая функция преобразования числа с плавающей точкой из десятичной системы в двоичную.
Мне известно, как преобразовать целое десятичное в двоичное - делением в столбик на 2.
Мне также известно, как вручную преобразовать двоичное с плавающей точкой в десятичное с плавающей точкой, например:
101.1101 = 1*2^2+0*2^1+1*2^0+1*2^(-1)+1*2^(-2)+0*2(-3)+1*2^(-4)
а вот как обратно преобразовать, например 5.127 в двоичную, пока не могу придумать.


> 12 ©   (22.04.10 15:21) [2]

спасибо за ссылку.
На что обратить внимание?


← →
12 ©   (2010-04-22 16:19) [4]

http://www.tspu.tula.ru/ivt/old_site/umr/timoi/solovieva/SS/perevod_drob.htm


← →
зашел спросить   (2010-04-22 16:34) [5]


> 12 ©   (22.04.10 16:19) [4]

это уже ближе, но несовсем понятно это утверждение:
пока дробная часть произведения не станет равной нулю (бывает, что сколько раз не умножай - она не станет равной нулю)или не будет достигнута требуемая точность представления числа в новой системе счисления(а тут на каждой итерации производить расчеты и точность страдает);

какие еще будут варианты?


← →
MBo ©   (2010-04-22 16:46) [6]

>как обратно преобразовать, например 5.127 в двоичную
Не преобразовать, а представить в строковом бинарном представлении.
Для этого достаточно привести к целому типу такого же размера (Integer для Single, Int64 для Double), и использовать функции типа IntToBin

пример:
IntegerVar := PInteger(@SingleVar)^;


← →
зашел спросить   (2010-04-22 17:17) [7]


> MBo ©   (22.04.10 16:46) [6]

а запятую в каком месте ставить?


← →
Jeer ©   (2010-04-22 17:27) [8]


> какие еще будут варианты?


Начать думать.


← →
MBo ©   (2010-04-22 17:42) [9]

>а запятую в каком месте ставить?
То, что я предложил - даст "сырое" представление.
Если нужно "с запятой", то гуглить IEEE 754 для изучения внутреннего устройства вещественных чисел.


← →
Jeer ©   (2010-04-22 17:59) [10]


> а вот как обратно преобразовать, например 5.127 в двоичную,
>  


Похоже ему надо "прямое" преобразование - то, что "видно".
Сетка с фиксированной точкой.
В этом случае отдельно преобразуется целая часть (сетка определяется значением числа), отдельно дробная часть ( сетка задается ).
Затем отдельные строковые представления "стыкуются", если надо вставлятся знак точки.
И то и то преобразования тривиальны.


← →
зашел спросить   (2010-04-22 18:01) [11]


> Начать думать.

Предлагайте.


← →
Игорь Шевченко ©   (2010-04-22 18:32) [12]


> Предлагайте.


Это было предложение


← →
зашел спросить   (2010-04-22 18:54) [13]

Всем спасибо за советы.
Особенно тем, кто отвечал по делу:)



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.044 c
2-1270973363
@!!ex
2010-04-11 12:09
2010.08.27
Одновременная компиляции проекта в два exe.


15-1270632270
Валерий М.
2010-04-07 13:24
2010.08.27
MySQl Server 4


15-1267824608
Юрий
2010-03-06 00:30
2010.08.27
С днем рождения ! 6 марта 2010 суббота


15-1264519606
Igor_guest
2010-01-26 18:26
2010.08.27
распространение продукта на Delphi


2-1273479707
JohnKorsh
2010-05-10 12:21
2010.08.27
Можно ли из Delphi управлять сетевым доступом к ресурсам?




   Наверх