我想向Visual Basic 2010中的二进制减法寻求帮助。由于@ video.baba,我的代码运行良好
Dim BinaryResult As Integer = Convert.ToInt32(TextBox1.Text, 2) + Convert.ToInt32(TextBox2.Text, 2)
Textbox3.Text = BinaryResult.ToString
最终,问题是这样的。如果第一个输入比第二个输入低,给我一个否定的结果,但答案就太远了
示例:
0000 - 1111 = 11111111111111111111111111111001
必须
0000 - 1111 = -01111
任何帮助将不胜感激。谢谢
答案 0 :(得分:0)
如果您确实希望输出为-01111
(或-1111
,因为省略了前导零),则必须使数字为正,然后在二进制字符串前加上减号。 / p>
然后,当将其转换回时,您必须删除该符号,并使生成的数字再次变为负数。
转换为二进制:
Dim BinaryResult As Integer = Convert.ToInt32(TextBox1.Text, 2) - Convert.ToInt32(TextBox2.Text, 2)
If BinaryResult < 0 Then
TextBox3.Text = "-" & Convert.ToString(-BinaryResult, 2)
Else
TextBox3.Text = Convert.ToString(BinaryResult, 2)
End If
从二进制转换:
Dim BinaryResult As Integer
If TextBox3.Text.StartsWith("-") Then
BinaryResult = -Convert.ToInt32(TextBox3.Text.TrimStart("-"c), 2)
Else
BinaryResult = Convert.ToInt32(TextBox3.Text, 2)
End If
可重复使用的版本:
Private Function BinarySubtract(ByVal a As String, ByVal b As String) As String
Dim BinaryResult As Integer = Convert.ToInt32(a, 2) - Convert.ToInt32(b, 2)
If BinaryResult < 0 Then
Return "-" & Convert.ToString(-BinaryResult, 2)
Else
Return Convert.ToString(BinaryResult, 2)
End If
End Function
Private Function FromBinary(ByVal s As String) As Integer
If s.StartsWith("-") Then
Return -Convert.ToInt32(s.TrimStart("-"c), 2)
Else
Return Convert.ToInt32(s, 2)
End If
End Function