二进制减法VB.NET

时间:2018-09-27 05:41:03

标签: vb.net binary subtraction

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

任何帮助将不胜感激。谢谢

1 个答案:

答案 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

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