English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной курс Java

Java Управление потоком

Java Массивы

Java Ориентированность на объекты (I)

Java Ориентированность на объекты (II)

Java Ориентированность на объекты (III)

Обработка исключений Java

Java Списки (List)

Java Queue (очередь)

Java Map-сборники

Java Set-сборники

Java Ввод/вывод (I/O)

Java Reader/Writer

Другие темы Java

Конвертация двоичных чисел и восьмеричных чисел в Java

Java полный список примеров

В этом приложении вы узнаете, как использовать функции Java для преобразования двоичных чисел в восьмеричные и обратно.

Пример 1: Программа для преобразования двоичного в восьмеричное

В этой программе мы сначала преобразуем двоичное число в десятичное. Затем десятичное число преобразуется в восьмеричное.

public class BinaryOctal {
    public static void main(String[] args) {
        long binary = 101001;
        int octal = convertBinarytoOctal(binary);
        System.out.printf("%d двоичное = %d восьмеричное", binary, octal);
    }
    public static int convertBinarytoOctal(long binaryNumber)
    {
        int octalNumber = 0, decimalNumber = 0, i = 0;
        while(binaryNumber != 0)
        {
            decimalNumber += (binaryNumber % 10) * Math.pow(2, i);
            ++i;
            binaryNumber /= 10;
        }
        i = 1;
        while (decimalNumber != 0)
        {
            octalNumber += (decimalNumber % 8) * i;
            decimalNumber /= 8;
            i *= 10;
        }
        return octalNumber;
    }
}

При запуске программы выводится:

101001 двоичное = 51 восьмеричное

Эта конверсия происходит следующим образом:

Двоичное в десятичное
1 * 25 + 0 * 24 + 1 * 23 + 0 * 22 + 0 * 21 + 1 * 20 = 41
Десятичное в восьмеричное
8 | 418 | 5 -- 1
8 | 0 -- 5
(51)

Пример 2: Программа для преобразования восьмеричного в двоичное

В этой программе сначала восьмеричное число преобразуется в десятичное. Затем десятичное число преобразуется в двоичное.

public class OctalBinary {
    public static void main(String[] args) {
        int octal = 67;
        long binary = convertOctalToBinary(octal);
        System.out.printf("%d в восьмеричном = %d двоичном", octal, binary);
    }
    public static long convertOctalToBinary(int octalNumber)
    {
        int decimalNumber = 0, i = 0;
        long binaryNumber = 0;
        while (octalNumber != 0)
        {
            decimalNumber += (octalNumber % 10) * Math.pow(8, i);
            ++i;
            octalNumber /= 10;
        }
        i = 1;
        while (decimalNumber != 0)
        {
            binaryNumber += (decimalNumber % 2) * i;
            decimalNumber /= 2;
            i *= 10;
        }
        return binaryNumber;
    }
}

При запуске программы выводится:

67 в восьмеричном = 110111 в двоичном

Эта конверсия происходит следующим образом:

octal в десятичное
6 * 81 + 7 * 80 = 55
десятичное в двоичное
2 | 552 | 27 -- 1
2 | 13 -- 1
2 | 6  -- 1
2 | 3  -- 0
2 | 1  -- 1
2 | 0  -- 1
(110111)

Java полный список примеров