Преобразование двоичного в десятичное на Java — все способы с примерами

Двоичные числа состоят только из 2 цифр: 0 и 1. Их можно записать в системе счисления с основанием 2. Например:

10 (2), 1000 (8), 11001 (25)

Десятичные числа состоят из 10 цифр: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Их можно записать в системе счисления с основанием 10:

18, 222, 987

Ниже мы напишем программу на Java для преобразования двоичных чисел в десятичные и обратно, используя как встроенные, так и собственные методы.

Пример 1: двоичное в десятичное (собственный метод)

class Main {

  public static void main(String[] args) {

    // двоичное число
    long num = 110110111;

    // вызываем метод и передаём двоичное число
    int decimal = convertBinaryToDecimal(num);

    System.out.println("Binary to Decimal");
    System.out.println(num + " = " + decimal);
  }

  public static int convertBinaryToDecimal(long num) {
    int decimalNumber = 0, i = 0;
    long remainder;

    while (num != 0) {
      remainder = num % 10;
      num /= 10;
      decimalNumber += remainder * Math.pow(2, i);
      ++i;
    }

    return decimalNumber;
  }
}

Вывод:

110110111 in binary = 439 in decimal

Пример 2: двоичное в десятичное через parseInt()

class Main {
  public static void main(String[] args) {

    // двоичное число
    String binary = "01011011";

    // преобразуем в десятичное
    int decimal = Integer.parseInt(binary, 2);
    System.out.println(binary + " in binary = " + decimal + " in decimal.");
  }
}

Вывод:

01011011 in binary = 91 in decimal.

Здесь мы использовали метод parseInt() класса Integer для преобразования двоичного числа в десятичное.

Пример 3: десятичное в двоичное (собственный метод)

class Main {

  public static void main(String[] args) {

    // десятичное число
    int num = 19;
    System.out.println("Decimal to Binary");

    // вызываем метод преобразования в двоичное
    long binary = convertDecimalToBinary(num);

    System.out.println("\n" + num + " = " + binary);
    }

  public static long convertDecimalToBinary(int n) {

    long binaryNumber = 0;
    int remainder, i = 1, step = 1;

    while (n!=0) {
      remainder = n % 2;
        System.out.println("Step " + step++ + ": " + n + "/2");

        System.out.println("Quotient = " + n/2 + ", Remainder = " + remainder);
        n /= 2;

        binaryNumber += remainder * i;
        i *= 10;
    }

    return binaryNumber;
    }
}

Вывод:

Decimal to Binary
Step 1: 19/2
Quotient = 9, Remainder = 1
Step 2: 9/2
Quotient = 4, Remainder = 1
Step 3: 4/2
Quotient = 2, Remainder = 0
Step 4: 2/2
Quotient = 1, Remainder = 0
Step 5: 1/2
Quotient = 0, Remainder = 1

19 = 10011

Пример 4: десятичное в двоичное через toBinaryString()

Можно также использовать метод toBinaryString() класса Integer:

class Main {
  public static void main(String[] args) {

    // десятичное число
    int decimal = 91;

    // конвертируем в двоичное
    String binary = Integer.toBinaryString(decimal);
    System.out.println(decimal + " in decimal = " + binary + " in binary.");
  }
}

Вывод:

91 in decimal = 1011011 in binary.

Совет

Метод toBinaryString() принимает целое число и возвращает его строковое представление в системе с основанием 2 (двоичное).