/
NikolayIvkin
/
TheAlgorithms
Обзор
Документация
Войти
/
NikolayIvkin
/
TheAlgorithms
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/main/java/com/thealgorithms/conversions/BinaryToOctal.java
45 строк
1 KB
Alex Klymenko
refactor: `BinaryToOctal` (#5338)
17 авг 2024, 22:06
Не верифицирован
17 авг 2024, 22:06
e8985b3
Код
Авторство
О чём код?
package com.thealgorithms.conversions; public final class BinaryToOctal { private static final int BITS_PER_OCTAL_DIGIT = 3; private static final int BINARY_BASE = 2; private static final int DECIMAL_BASE = 10; private BinaryToOctal() { } /** * This method converts a binary number to an octal number. * * @param binary The binary number * @return The octal number * @throws IllegalArgumentException if the input is not a valid binary number */ public static String convertBinaryToOctal(int binary) { if (binary == 0) { return "0"; } if (!String.valueOf(binary).matches("[01]+")) { throw new IllegalArgumentException("Input is not a valid binary number."); } StringBuilder octal = new StringBuilder(); int currentBit; int bitValueMultiplier = 1; while (binary != 0) { int octalDigit = 0; for (int i = 0; i < BITS_PER_OCTAL_DIGIT && binary != 0; i++) { currentBit = binary % DECIMAL_BASE; binary /= DECIMAL_BASE; octalDigit += currentBit * bitValueMultiplier; bitValueMultiplier *= BINARY_BASE; } octal.insert(0, octalDigit); bitValueMultiplier = 1; // Reset multiplier for the next group } return octal.toString(); } }