二进制减法 VB.NET

Binary Subtraction VB.NET

我想就 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

如有任何帮助,我们将不胜感激。谢谢

如果您真的希望输出为 -01111(或 -1111,因为前导零被省略),您必须使数字为正数,然后在二进制字符串前添加负号.

然后,在将其转换回来时,您必须删除符号并再次使结果为负数。

转换为二进制:

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

在线测试: https://dotnetfiddle.net/PoQZA6