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