IEEE-754-32位单精度浮点数计算VB源码知识讲解

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VB IEEE-754 32位单精度浮点数计算源码

Option Explicit

Private Function GetData(TmpHex As String) As String

Dim TmpBin As String

Dim TmpMi As Integer

On Error Resume Next

TmpBin = HexToBin(TmpHex)

Label1.Caption = TmpBin & " 长度" & Len(TmpBin) & "位,第1位1为负数,0为正数"

TmpMi = BinToOct(Mid(TmpBin, 2, 8)) - 127

GetData = Round(BinToOct("1." & Mid(TmpBin, 10, 23)) * (2 ^ TmpMi), 6)

If Left(TmpBin, 1) = "1" Then GetData = "-" & GetData

End Function

Private Function HexToBin(TmpHex As String) As String

Dim n As Integer

Dim I As Integer

Dim TmpBin As String

On Error Resume Next

For n = 1 To Len(TmpHex)

I = Val("&H" & Mid(TmpHex, n, 1))

TmpBin = ""

While I > 0

TmpBin = CStr(I Mod 2) & TmpBin

I = I \ 2

Wend

HexToBin = HexToBin & Right("0000" & TmpBin, 4)

Next n

End Function

Private Function BinToOct(TmpBin As String) As Double

Dim n As Integer

Dim TmpS() As String

On Error Resume Next

TmpS = Split(TmpBin, ".")

For n = 1 To Len(TmpS(0))

If Mid(TmpS(0), n, 1) = "1" Then BinToOct = BinToOct + (2 ^ (Len(TmpS(0)) - n))

Next n

If UBound(TmpS) = 1 Then

For n = 1 To Len(TmpS(1))

If Mid(TmpS(1), n, 1) = "1" Then BinToOct = BinToOct + (2 ^ (-1 * n)) Next n

End If

End Function

相关文档
最新文档