哪位有浮点数转换成二进制表的算法啊?

softer 2003-09-15 11:38:54
浮点数表示法为:
对于大小为32-bit的浮点数
1、其第31 bit为符号位,为0则表示正数,反之为复数,其读数值用s表示;
2、第30~23 bit为幂数,其读数值用e表示;
3、第22~0 bit共23 bit作为系数,视为二进制纯小数,假定该小数的十进制值为x;
分不够可以再加
...全文
60 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluenightsky 2003-09-15
  • 打赏
  • 举报
回复
gz
hiflower 2003-09-15
  • 打赏
  • 举报
回复
32-bit 可用一个整数表示,然后将此整数按规定转换为一个浮点数。

function FloatIntToFloat(n:Integer):Double;
var
Sign:Integer; //s
Exponent:Integer;//e
Mantissa:Double; //x
begin
if (n and $80000000)=0 then
Sign:=1
else
Sign:=-1;

Exponent:=(n and $7FFFFFFF) shr 23;
if Exponent>127 then
Exponent:=128-Exponent;

Mantissa:=(n and $007FFFFF)/Power(2,23);
Result:=Sign*Mantissa*Power(2,Exponent);
end;
softer 2003-09-15
  • 打赏
  • 举报
回复
楼主的函数有一点问题主要以下几个地方作了修改
但我求的是反过程,是将浮数据转换成二进制式表示

function TForm1.FloatIntToFloat(n:Integer):Double;
var
Sign:Integer; //s
Exponent:Integer;//e
Mantissa:Double; //x
begin
if (n and $80000000)=0 then
Sign:=1
else
Sign:=-1;

Exponent:=(n and $7FFFFFFF) shr 23;
if Exponent>127 then
Exponent :=Exponent-127;//修改后
//Exponent:=128-Exponent;//修改前

Mantissa:=(n and $007FFFFF)/Power(2,23);
Result:=Sign*(1+Mantissa)*Power(2,Exponent);//修改后
Result:=Sign*Mantissa*Power(2,Exponent); //修改前


end;

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧