借鉴了反码算法的经验,在转换为补码的函数中,要以求反码函数为基础,过多的就不在说了,到此为止,转换函数都写完了,我还会添加原码、反码、补码运算的函数模块。十进制转换为二进制补码的VB6代码:
Public Function BinaryConvertC(ByVal iNum As Integer, Optional ByVal iLength As Integer = 8) As String
'//*************************************** Design By 0412Rainbow **********************************************//
'功能:用于将一个十进制数转换为二进制补码,iNum为所要转换的十进制数,iLength为机器字长(即二进制数的位数),可选,默认传递
' 值为8,iNum的转换范围-2^(n-1) 到 +2^(n-1),返回值为二进制的字符串形式.
'说明:补码简介(引自程序员教程):设机器字长为n,则最高位是符号位,0表示正号,1表示负号;正数的补码与原码和反码相同,负数的
' 补码则等于其绝反码的末尾加1。
'函数调用 二进制补码 = BinaryConvertC(十进制数,二进制字长)
'//**************************************************************************************************************//
ReDim S(iLength) As String * 1
Dim sResult As String, tempResult As String, j As Integer
Dim y As Boolean: y = True 'y用与判断取补加1的时候是否进位.如果进位,则为真;反之,为假.
tempResult = BinaryConvertB(iNum, iLength)
For j = 1 To iLength
S(j) = Mid(tempResult, iLength - j + 1, 1)
Next
If Abs(iNum) <> iNum Then
For j = 1 To iLength
If y = True Then
If S(j) = 0 Then
S(j) = 1: y = False
Else
S(j) = 0
End If
Else
Exit For
End If
Next
End If
For i = iLength To 1 Step -1
sResult = sResult & S(i)
'Debug.Print sResult
Next
BinaryConvertC = sResult
End Function
函数调用举例请参见原码转换的示例即可! -------彩虹 ^_^