Skip to content

Commit ab0477a

Browse files
sumitsg34maibin
authored andcommitted
BAEL-3127 Binary Numbers in Java (eugenp#7469)
* BAEL-3027 binary number arithmetic operations * BAEL-3127 updated the unit test case names * added unit test cases for built-in java functions * updated function name * BAEL-3127 updated unit test case names * BAEL-3127 removed comments from code * BAEL-3127 updated variable names * BAEL-3027 binary number arithmetic operations * merging upsteam * fixing build issue * updated formatting * update variable names
1 parent 780d6c7 commit ab0477a

1 file changed

Lines changed: 140 additions & 148 deletions

File tree

Lines changed: 140 additions & 148 deletions
Original file line numberDiff line numberDiff line change
@@ -1,148 +1,140 @@
1-
package com.baeldung.binarynumbers;
2-
3-
public class BinaryNumbers {
4-
5-
/**
6-
* This method takes a decimal number and convert it into a binary number.
7-
* example:- input:10, output:1010
8-
*
9-
* @param decimalNumber
10-
* @return binary number
11-
*/
12-
public Integer convertDecimalToBinary(Integer decimalNumber) {
13-
14-
if (decimalNumber == 0) {
15-
return decimalNumber;
16-
}
17-
18-
StringBuilder binaryNumber = new StringBuilder();
19-
20-
while (decimalNumber > 0) {
21-
22-
int remainder = decimalNumber % 2;
23-
int result = decimalNumber / 2;
24-
25-
binaryNumber.append(remainder);
26-
decimalNumber = result;
27-
}
28-
29-
binaryNumber = binaryNumber.reverse();
30-
31-
return Integer.valueOf(binaryNumber.toString());
32-
}
33-
34-
/**
35-
* This method takes a binary number and convert it into a decimal number.
36-
* example:- input:101, output:5
37-
*
38-
* @param binary number
39-
* @return decimal Number
40-
*/
41-
public Integer convertBinaryToDecimal(Integer binaryNumber) {
42-
43-
Integer result = 0;
44-
Integer base = 1;
45-
46-
while (binaryNumber > 0) {
47-
48-
int lastDigit = binaryNumber % 10;
49-
binaryNumber = binaryNumber / 10;
50-
51-
result += lastDigit * base;
52-
53-
base = base * 2;
54-
}
55-
return result;
56-
}
57-
58-
/**
59-
* This method accepts two binary numbers and returns sum of input numbers.
60-
* Example:- firstNum: 101, secondNum: 100, output: 1001
61-
*
62-
* @param firstNum
63-
* @param secondNum
64-
* @return addition of input numbers
65-
*/
66-
public Integer addBinaryNumber(Integer firstNum, Integer secondNum) {
67-
68-
StringBuilder output = new StringBuilder();
69-
70-
int carry = 0;
71-
int temp;
72-
73-
while (firstNum != 0 || secondNum != 0) {
74-
75-
temp = (firstNum % 10 + secondNum % 10 + carry) % 2;
76-
output.append(temp);
77-
78-
carry = (firstNum % 10 + secondNum % 10 + carry) / 2;
79-
80-
firstNum = firstNum / 10;
81-
secondNum = secondNum / 10;
82-
}
83-
84-
if (carry != 0) {
85-
output.append(carry);
86-
}
87-
88-
return Integer.valueOf(output.reverse()
89-
.toString());
90-
}
91-
92-
/**
93-
* This method takes two binary number as input and subtract second number from the first number.
94-
* example:- firstNum: 1000, secondNum: 11, output: 101
95-
* @param firstNum
96-
* @param secondNum
97-
* @return Result of subtraction of secondNum from first
98-
*/
99-
public Integer substractBinaryNumber(Integer firstNum, Integer secondNum) {
100-
101-
int onesComplement = Integer.valueOf(getOnesComplement(secondNum));
102-
103-
StringBuilder output = new StringBuilder();
104-
105-
int carry = 0;
106-
int temp;
107-
108-
while (firstNum != 0 || onesComplement != 0) {
109-
110-
temp = (firstNum % 10 + onesComplement % 10 + carry) % 2;
111-
output.append(temp);
112-
113-
carry = (firstNum % 10 + onesComplement % 10 + carry) / 2;
114-
115-
firstNum = firstNum / 10;
116-
onesComplement = onesComplement / 10;
117-
}
118-
119-
String additionOfFirstNumAndOnesComplement = output.reverse()
120-
.toString();
121-
122-
if (carry == 1) {
123-
return addBinaryNumber(Integer.valueOf(additionOfFirstNumAndOnesComplement), carry);
124-
} else {
125-
return getOnesComplement(Integer.valueOf(additionOfFirstNumAndOnesComplement));
126-
}
127-
128-
}
129-
130-
public Integer getOnesComplement(Integer num) {
131-
132-
StringBuilder onesComplement = new StringBuilder();
133-
134-
while (num > 0) {
135-
int lastDigit = num % 10;
136-
if (lastDigit == 0) {
137-
onesComplement.append(1);
138-
} else {
139-
onesComplement.append(0);
140-
}
141-
num = num / 10;
142-
}
143-
144-
return Integer.valueOf(onesComplement.reverse()
145-
.toString());
146-
}
147-
148-
}
1+
package com.baeldung.binarynumbers;
2+
3+
public class BinaryNumbers {
4+
5+
/**
6+
* This method takes a decimal number and convert it into a binary number.
7+
* example:- input:10, output:1010
8+
*
9+
* @param decimalNumber
10+
* @return binary number
11+
*/
12+
public Integer convertDecimalToBinary(Integer decimalNumber) {
13+
14+
if (decimalNumber == 0) {
15+
return decimalNumber;
16+
}
17+
18+
StringBuilder binaryNumber = new StringBuilder();
19+
Integer quotient = decimalNumber;
20+
21+
while (quotient > 0) {
22+
23+
int remainder = quotient % 2;
24+
binaryNumber.append(remainder);
25+
quotient /= 2;
26+
}
27+
28+
binaryNumber = binaryNumber.reverse();
29+
return Integer.valueOf(binaryNumber.toString());
30+
}
31+
32+
/**
33+
* This method takes a binary number and convert it into a decimal number.
34+
* example:- input:101, output:5
35+
*
36+
* @param binary number
37+
* @return decimal Number
38+
*/
39+
public Integer convertBinaryToDecimal(Integer binaryNumber) {
40+
41+
Integer decimalNumber = 0;
42+
Integer base = 1;
43+
44+
while (binaryNumber > 0) {
45+
46+
int lastDigit = binaryNumber % 10;
47+
binaryNumber = binaryNumber / 10;
48+
49+
decimalNumber += lastDigit * base;
50+
base = base * 2;
51+
}
52+
return decimalNumber;
53+
}
54+
55+
/**
56+
* This method accepts two binary numbers and returns sum of input numbers.
57+
* Example:- firstNum: 101, secondNum: 100, output: 1001
58+
*
59+
* @param firstNum
60+
* @param secondNum
61+
* @return addition of input numbers
62+
*/
63+
public Integer addBinaryNumber(Integer firstNum, Integer secondNum) {
64+
65+
StringBuilder output = new StringBuilder();
66+
67+
int carry = 0;
68+
int temp;
69+
70+
while (firstNum != 0 || secondNum != 0) {
71+
72+
temp = (firstNum % 10 + secondNum % 10 + carry) % 2;
73+
output.append(temp);
74+
75+
carry = (firstNum % 10 + secondNum % 10 + carry) / 2;
76+
77+
firstNum = firstNum / 10;
78+
secondNum = secondNum / 10;
79+
}
80+
81+
if (carry != 0) {
82+
output.append(carry);
83+
}
84+
85+
return Integer.valueOf(output.reverse()
86+
.toString());
87+
}
88+
89+
/**
90+
* This method takes two binary number as input and subtract second number from the first number.
91+
* example:- firstNum: 1000, secondNum: 11, output: 101
92+
* @param firstNum
93+
* @param secondNum
94+
* @return Result of subtraction of secondNum from first
95+
*/
96+
public Integer substractBinaryNumber(Integer firstNum, Integer secondNum) {
97+
98+
int onesComplement = Integer.valueOf(getOnesComplement(secondNum));
99+
StringBuilder output = new StringBuilder();
100+
int carry = 0;
101+
int temp;
102+
103+
while (firstNum != 0 || onesComplement != 0) {
104+
105+
temp = (firstNum % 10 + onesComplement % 10 + carry) % 2;
106+
output.append(temp);
107+
108+
carry = (firstNum % 10 + onesComplement % 10 + carry) / 2;
109+
110+
firstNum = firstNum / 10;
111+
onesComplement = onesComplement / 10;
112+
}
113+
114+
String additionOfFirstNumAndOnesComplement = output.reverse()
115+
.toString();
116+
117+
if (carry == 1) {
118+
return addBinaryNumber(Integer.valueOf(additionOfFirstNumAndOnesComplement), carry);
119+
} else {
120+
return getOnesComplement(Integer.valueOf(additionOfFirstNumAndOnesComplement));
121+
}
122+
}
123+
124+
public Integer getOnesComplement(Integer num) {
125+
126+
StringBuilder onesComplement = new StringBuilder();
127+
while (num > 0) {
128+
int lastDigit = num % 10;
129+
if (lastDigit == 0) {
130+
onesComplement.append(1);
131+
} else {
132+
onesComplement.append(0);
133+
}
134+
num = num / 10;
135+
}
136+
return Integer.valueOf(onesComplement.reverse()
137+
.toString());
138+
}
139+
140+
}

0 commit comments

Comments
 (0)