vb 十进制转换成 八进制 二进制原码 二进制补码 二进制反码 程序

输入框为text1、输出为picture1
要求越简单越好

清晰 谢谢

VB.NET控制台程序:

Module module3

Sub Main()
Dim i As Integer
Dim num As Integer = -35
Dim R As Integer = 8
Dim arr(33) As Integer
Dim len As Integer

arr = TransToR(num, R)
len = arr(0)
Console.Write(num & " 转换成 " & R & " 进制后:" & vbTab)
If (arr(1) = 1) Then
Console.Write("-")
End If
For i = len + 1 To 2 Step -1
Console.Write(arr(i))
Next
Console.WriteLine()

arr = TransToSourceCode(num)
Console.Write(num & " 转换成32位二进制源码后:" & vbTab)
Console.Write(arr(1))
For i = 32 To 2 Step -1
Console.Write(arr(i))
Next
Console.WriteLine()

arr = TransToReverseCode(num)
Console.Write(num & " 转换成32位二进制反码后:" & vbTab)
Console.Write(arr(1))
For i = 32 To 2 Step -1
Console.Write(arr(i))
Next
Console.WriteLine()

arr = TransToCompensatoryCode(num)
Console.Write(num & " 转换成32位二进制补码后:" & vbTab)
Console.Write(arr(1))
For i = 32 To 2 Step -1
Console.Write(arr(i))
Next
Console.WriteLine()
End Sub

'将十进制数num转换为R(2<=R<=9)进制数,结果存在arr数组中
'arr(0)存储长度, arr(1)存储符号位:1为负,0为正
Function TransToR(ByVal num As Integer, ByVal R As Integer) As Integer()
Dim arr(33) As Integer

arr(0) = 0 '初始长度

'设置符号位
If (num < 0) Then
arr(1) = 1
Else
arr(1) = 0
End If

num = Math.Abs(num)

While num > 0
arr(0) = arr(0) + 1
arr(arr(0) + 1) = num Mod R
num \= R
End While

Return arr
End Function

'将十进制数num转换为二进制原码
Function TransToSourceCode(ByVal num As Integer) As Integer()
Dim arr(33) As Integer
Dim i As Integer

arr = TransToR(num, 2)

'高位补零
For i = arr(0) + 2 To 32
arr(i) = 0
Next

arr(0) = 32
Return arr
End Function

'将十进制数num转换为二进制反码
Function TransToReverseCode(ByVal num As Integer) As Integer()
Dim arr(33) As Integer
Dim i As Integer

arr = TransToSourceCode(num)

If num >= 0 Then
Return arr
End If

'除符号位外各位取反
For i = 2 To 33
arr(i) = 1 - arr(i)
Next

Return arr
End Function

'将十进制数num转换为二进制补码
Function TransToCompensatoryCode(ByVal num As Integer) As Integer()
Dim arr(33) As Integer
Dim i As Integer
Dim c As Integer = 0 '进位

arr = TransToReverseCode(num)

If num >= 0 Then
Return arr
End If

'末尾加1
i = 2
arr(i) += 1
Do While True
arr(i) = c + arr(i)
c = arr(i) \ 2
arr(i) = arr(i) Mod 2
i += 1
If c < 1 Then
Exit Do
End If
Loop

Return arr
End Function

End Module
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-08
Private Sub Form_Click() '本断用于10进制整数转二进制
Dim s As String, fuhao As Boolean, zero As String
Dim p As Long, m As Long
'fuhao 用于判断数的符号
'zero用于判断输入的数是否为0
s = ""
fuhao = False
zero = False
m = Val(Text1.Text)
If m < 0 Then m = Abs(m): fuhao = True
If m = 0 Then zero = True
Do While m <> 0 And zero = False
p = m Mod 2
s = p & s
m = Int(m / 2)
Loop
If zero = True Then Picture1.Print "0"
If fuhao = True And zero = False Then
s = "-" & s
Picture1.Print s
ElseIf fuhao = False And zero = False Then
Picture1.Print s
End If
End Sub

Private Sub Form_Click() '本断用于10进制整数转八进制
Dim s As String, fuhao As Boolean, zero As String
Dim p As Long, m As Long
'fuhao 用于判断数的符号
'zero用于判断输入的数是否为0
s = ""
fuhao = False
zero = False
m = Val(Text1.Text)
If m < 0 Then m = Abs(m): fuhao = True
If m = 0 Then zero = True
Do While m <> 0 And zero = False
p = m Mod 8
s = p & s
m = Int(m / 8)
Loop
If zero = True Then Picture1.Print "0"
If fuhao = True And zero = False Then
s = "-" & s
Picture1.Print s
ElseIf fuhao = False And zero = False Then
Picture1.Print s
End If
End Sub