Skip to content

refactor: Enhance docs, add more tests in OctalToBinary #5942

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Oct 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 42 additions & 3 deletions src/main/java/com/thealgorithms/conversions/OctalToBinary.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,40 @@
package com.thealgorithms.conversions;

/**
* Converts any Octal Number to a Binary Number
* A utility class to convert an octal (base-8) number into its binary (base-2) representation.
*
* <p>This class provides methods to:
* <ul>
* <li>Convert an octal number to its binary equivalent</li>
* <li>Convert individual octal digits to binary</li>
* </ul>
*
* <h2>Octal to Binary Conversion:</h2>
* <p>An octal number is converted to binary by converting each octal digit to its 3-bit binary equivalent.
* The result is a long representing the full binary equivalent of the octal number.</p>
*
* <h2>Example Usage</h2>
* <pre>
* long binary = OctalToBinary.convertOctalToBinary(52); // Output: 101010 (52 in octal is 101010 in binary)
* </pre>
*
* @author Bama Charan Chhandogi
* @see <a href="https://en.wikipedia.org/wiki/Octal">Octal Number System</a>
* @see <a href="https://en.wikipedia.org/wiki/Binary_number">Binary Number System</a>
*/

public final class OctalToBinary {
private OctalToBinary() {
}

/**
* Converts an octal number to its binary representation.
*
* <p>Each octal digit is individually converted to its 3-bit binary equivalent, and the binary
* digits are concatenated to form the final binary number.</p>
*
* @param octalNumber the octal number to convert (non-negative integer)
* @return the binary equivalent as a long
*/
public static long convertOctalToBinary(int octalNumber) {
long binaryNumber = 0;
int digitPosition = 1;
Expand All @@ -20,12 +46,25 @@ public static long convertOctalToBinary(int octalNumber) {
binaryNumber += binaryDigit * digitPosition;

octalNumber /= 10;
digitPosition *= 1000; // Move to the next group of 3 binary digits
digitPosition *= 1000;
}

return binaryNumber;
}

/**
* Converts a single octal digit (0-7) to its binary equivalent.
*
* <p>For example:
* <ul>
* <li>Octal digit 7 is converted to binary 111</li>
* <li>Octal digit 3 is converted to binary 011</li>
* </ul>
* </p>
*
* @param octalDigit a single octal digit (0-7)
* @return the binary equivalent as a long
*/
public static long convertOctalDigitToBinary(int octalDigit) {
long binaryDigit = 0;
int binaryMultiplier = 1;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,24 @@ public void testConvertOctalToBinary() {
assertEquals(101010, OctalToBinary.convertOctalToBinary(52));
assertEquals(110, OctalToBinary.convertOctalToBinary(6));
}

@Test
public void testConvertOctalToBinarySingleDigit() {
assertEquals(0, OctalToBinary.convertOctalToBinary(0));
assertEquals(1, OctalToBinary.convertOctalToBinary(1));
assertEquals(111, OctalToBinary.convertOctalToBinary(7));
}

@Test
public void testConvertOctalToBinaryMultipleDigits() {
assertEquals(100110111, OctalToBinary.convertOctalToBinary(467));
assertEquals(111101, OctalToBinary.convertOctalToBinary(75));
assertEquals(111100101, OctalToBinary.convertOctalToBinary(745));
}

@Test
public void testConvertOctalToBinaryWithZeroPadding() {
assertEquals(100001010, OctalToBinary.convertOctalToBinary(412));
assertEquals(101101110, OctalToBinary.convertOctalToBinary(556));
}
}