Если вы действительно хотите, чтобы выходные данные были -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