首页 > 编程知识 正文

十进制数转换为ieee754单精度浮点数,将十进制-0.625转换为IEEE短浮点数

时间:2023-05-03 15:31:13 阅读:228446 作者:2661

单精度浮点数转十进制方法

一、单精度浮点数符合IEEE754标准,32位,前面第一位是符号位,接下来的8位是指数,最后23位是尾数。编程中了解这些就够了,转换方法如下:

二、VB中转换示例:

'VB浮点数转换程序

Option Explicit       '利用函数CopyMemory转换

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Dim F As Single       '十进制数

Dim A(3) As Byte      '16进制浮点数

Private Sub Command1_Click()          '转换为十进制数

A(0) = CLng("&H" & Text1(3).Text)   '16进制字符转数字

A(1) = CLng("&H" & Text1(2).Text)

A(2) = CLng("&H" & Text1(1).Text)

A(3) = CLng("&H" & Text1(0).Text)

CopyMemory F, A(0), 4               '转换

Text2.Text = F                      '显示结果

End Sub

Private Sub Command2_Click()          '转换为浮点数格式

F = Val(Text2.Text)                 '十进制字符转数字

CopyMemory A(0), F, 4              '转换

Text1(0).Text = IIf(A(3) > 15, Hex(A(3)), "0" & Hex(A(3)))  '显示结果

Text1(1).Text = IIf(A(2) > 15, Hex(A(2)), "0" & Hex(A(2)))

Text1(2).Text = IIf(A(1) > 15, Hex(A(1)), "0" & Hex(A(1)))

Text1(3).Text = IIf(A(0) > 15, Hex(A(0)), "0" & Hex(A(0)))

End Sub

三、C中转换示例:

union sf

{

float f;

unsigned char s[4];

}a;

float m;

unsigned char t[4]

//转换为十进制数

a.s[0]=0x51;  //低位在前

a.s[1]=0x06;

a.s[2]=0x9E;

a.s[3]=0x3F;

m=a.f;

//转换为浮点数格式

a.f=m;

t[0]=a.s[0];

t[1]=a.s[1];

t[2]=a.s[2];

t[3]=a.s[3];

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。