Skip to content

Commit 8798e04

Browse files
Refactor BinaryToDecimal class (TheAlgorithms#4135)
1 parent d160156 commit 8798e04

File tree

2 files changed

+20
-5
lines changed

2 files changed

+20
-5
lines changed

src/main/java/com/thealgorithms/conversions/BinaryToDecimal.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77
*/
88
class BinaryToDecimal {
99

10-
public static int binaryToDecimal(int binNum) {
11-
int binCopy, d, s = 0, power = 0;
10+
public static long binaryToDecimal(long binNum) {
11+
long binCopy, d, s = 0, power = 0;
1212
binCopy = binNum;
1313
while (binCopy != 0) {
1414
d = binCopy % 10;
15-
s += d * (int) Math.pow(2, power++);
15+
s += d * (long) Math.pow(2, power++);
1616
binCopy /= 10;
1717
}
1818
return s;
@@ -26,7 +26,7 @@ public static int binaryToDecimal(int binNum) {
2626
public static void main(String args[]) {
2727
Scanner sc = new Scanner(System.in);
2828
System.out.print("Binary number: ");
29-
System.out.println("Decimal equivalent:" + binaryToDecimal(sc.nextInt()));
29+
System.out.println("Decimal equivalent:" + binaryToDecimal(sc.nextLong()));
3030
sc.close();
3131
}
3232
}

src/test/java/com/thealgorithms/conversions/BinaryToDecimalTest.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,27 @@
77
public class BinaryToDecimalTest {
88

99
@Test
10+
// Test converting binary to decimal
1011
public void testBinaryToDecimal() {
11-
//zeros at the starting should be removed
12+
// zeros at the starting should be removed
1213
assertEquals(0, BinaryToDecimal.binaryToDecimal(0));
1314
assertEquals(1, BinaryToDecimal.binaryToDecimal(1));
1415
assertEquals(5, BinaryToDecimal.binaryToDecimal(101));
1516
assertEquals(63, BinaryToDecimal.binaryToDecimal(111111));
1617
assertEquals(512, BinaryToDecimal.binaryToDecimal(1000000000));
1718
}
19+
20+
@Test
21+
// Test converting negative binary numbers
22+
public void testNegativeBinaryToDecimal() {
23+
assertEquals(-1, BinaryToDecimal.binaryToDecimal(-1));
24+
assertEquals(-42, BinaryToDecimal.binaryToDecimal(-101010));
25+
}
26+
27+
@Test
28+
// Test converting binary numbers with large values
29+
public void testLargeBinaryToDecimal() {
30+
assertEquals(262144L, BinaryToDecimal.binaryToDecimal(1000000000000000000L));
31+
assertEquals(524287L, BinaryToDecimal.binaryToDecimal(1111111111111111111L));
32+
}
1833
}

0 commit comments

Comments
 (0)