patternMinor
Adding string binary numbers
Viewed 0 times
binarynumbersstringadding
Problem
My requirement is to add two binary numbers, say "1001" and "0101" as
```
Partial Class Default2
Inherits System.Web.UI.Page
Dim carry As Boolean = False ' Boolean variable to hold the carry if occured
Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
Dim binary1 As String = TextBox1.Text 'First binary number
Dim binary2 As String = TextBox2.Text 'Second binary number
Dim result As String = "" 'to store the result
For i As Integer = Len(binary1 ) - 1 To 0 Step -1
result = bin_add(getbyte(binary1 , i), getbyte(binary1, i)) & result ' calling function
Next
If carry = True Then
result = "1" & result 'if a carry remains add it to the MSB
End If
MsgBox(rslt) 'Display the result
End Sub
Public Function bin_add(b1 As Boolean, b2 As Boolean) As String'Function which performs the addition of each single bits form the two inputs which is passed from the calling function
Dim result As Boolean
If b1 AndAlso b2 = True Then 'both values are 1/true
If carry = True Then
result = True
carry = True
Else
result = False
carry = True
End If
ElseIf b1 = False And b2 = False Then 'Both are 0/false
If carry = True Then
result = carry
carry = False
Else
result = False
carry = False
End If
Else
If carry = True Then
result = False
carry = True
Else
result = True
carry = False
End If
End If
If result = True Then
Return "1" 'return 1 for Boolean true
Else
Return "0" 'return 0 for Boolean false
End If
End Function
Private Function ge
binary1 and binary2.```
Partial Class Default2
Inherits System.Web.UI.Page
Dim carry As Boolean = False ' Boolean variable to hold the carry if occured
Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
Dim binary1 As String = TextBox1.Text 'First binary number
Dim binary2 As String = TextBox2.Text 'Second binary number
Dim result As String = "" 'to store the result
For i As Integer = Len(binary1 ) - 1 To 0 Step -1
result = bin_add(getbyte(binary1 , i), getbyte(binary1, i)) & result ' calling function
Next
If carry = True Then
result = "1" & result 'if a carry remains add it to the MSB
End If
MsgBox(rslt) 'Display the result
End Sub
Public Function bin_add(b1 As Boolean, b2 As Boolean) As String'Function which performs the addition of each single bits form the two inputs which is passed from the calling function
Dim result As Boolean
If b1 AndAlso b2 = True Then 'both values are 1/true
If carry = True Then
result = True
carry = True
Else
result = False
carry = True
End If
ElseIf b1 = False And b2 = False Then 'Both are 0/false
If carry = True Then
result = carry
carry = False
Else
result = False
carry = False
End If
Else
If carry = True Then
result = False
carry = True
Else
result = True
carry = False
End If
End If
If result = True Then
Return "1" 'return 1 for Boolean true
Else
Return "0" 'return 0 for Boolean false
End If
End Function
Private Function ge
Solution
For now, let's ignore the fact that there are easier ways to add binary numbers. There are other issues with this code.
Why is code that adds binary numbers inheriting from a UI class? There's no need for this. Separate the concerns and create a module for this code instead.
Getting the values from the UI makes sense, but then you loop over
As I said earlier, I wouldn't expect a Function that adds binary numbers to take in Boolean values. I would rather it actually take in a byte and overload the method to handle string representation, but I'm lazy and you don't seem to need all that.
Putting it all together, the signature line
Should look like this.
Implementing this change will be left as an exercise for the reader.
Inherits System.Web.UI.PageWhy is code that adds binary numbers inheriting from a UI class? There's no need for this. Separate the concerns and create a module for this code instead.
carry is scoped to the class level. This is a symptom of problems in this code. Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
Dim binary1 As String = TextBox1.Text 'First binary number
Dim binary2 As String = TextBox2.Text 'Second binary number
Dim result As String = "" 'to store the result
For i As Integer = Len(binary1 ) - 1 To 0 Step -1
result = bin_add(getbyte(binary1 , i), getbyte(binary1, i)) & result ' calling function
Next
If carry = True Then
result = "1" & result 'if a carry remains add it to the MSB
End If
MsgBox(rslt) 'Display the result
End SubGetting the values from the UI makes sense, but then you loop over
bin_add, which obviously doesn't actually add anything, or you wouldn't need to loop or have a class variable. All of this logic should happen inside of bin_add.bin_add should take in two strings, handle all of the logic, and return a single string representing the output. While I'm at it, methods should have PascalCased verb-noun names. This method should be called AddBinary and I will refer to it as such for the rest of the review. As I said earlier, I wouldn't expect a Function that adds binary numbers to take in Boolean values. I would rather it actually take in a byte and overload the method to handle string representation, but I'm lazy and you don't seem to need all that.
Putting it all together, the signature line
Public Function bin_add(b1 As Boolean, b2 As Boolean) As StringShould look like this.
Public Function AddBinary(value1 as String, value2 as String) As StringImplementing this change will be left as an exercise for the reader.
Code Snippets
Inherits System.Web.UI.PageProtected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
Dim binary1 As String = TextBox1.Text 'First binary number
Dim binary2 As String = TextBox2.Text 'Second binary number
Dim result As String = "" 'to store the result
For i As Integer = Len(binary1 ) - 1 To 0 Step -1
result = bin_add(getbyte(binary1 , i), getbyte(binary1, i)) & result ' calling function
Next
If carry = True Then
result = "1" & result 'if a carry remains add it to the MSB
End If
MsgBox(rslt) 'Display the result
End SubPublic Function bin_add(b1 As Boolean, b2 As Boolean) As StringPublic Function AddBinary(value1 as String, value2 as String) As StringContext
StackExchange Code Review Q#60362, answer score: 5
Revisions (0)
No revisions yet.