изменить двоичный на десятичный - PullRequest
0 голосов
/ 09 октября 2018

Я должен написать метод, который изменяет двоичный код на десятичный.Напишите метод, который преобразует предоставленную двоичную цифру (в виде строки) в десятичное число.

  • convertToDecimal ("01101011") = 107
  • convertToDecimal ("00001011") =11

Я создал его, чтобы изменить десятичное число в двоичное, но я не уверен, как создать двоичное в десятичное.

public String convertToBinary(int decimal) {

    int n = decimal;
    int digit;
    String out = "";
    while (n > 0){
     n = decimal/2;
     digit = decimal % 2;
     out = digit + out;
     decimal = n;
    }

    out = addPadding(out);
    return out;
    }

private String addPadding(String s){
      String out = s;
      int len = s.length();
      if (len == 8) return s;
      else{
          switch(len){
            case 7:
                out = "0"+s;
                break;
            case 6:
                out = "00"+s;
                break;
            case 5:
                out = "000"+s;
                break;
           }
       }
       return out;
      }
}

Ответы [ 4 ]

0 голосов
/ 09 октября 2018

Попробуйте этот код

import java.util.Scanner;

class BinaryToDecimal
{
        public static void main(String args[])
        {
            Scanner s=new Scanner(System.in);

            System.out.println("Enter a binary number:");
            int n=s.nextInt();

            int decimal=0,p=0;

            while(n!=0)
            {
                decimal+=((n%10)*Math.pow(2,p));
                n=n/10;
                p++;
            }

            System.out.println(decimal);
        }
}
0 голосов
/ 09 октября 2018
1. We have to traverse from backwards as we do in the binary to decimal conversion.
2. If the character is '1', then we will add the value of power of 2.

public static int binaryToDecimal(String binary) {
        int value = 0,power = 0;
        for(int i = binary.length() - 1; i >= 0;i--) {
            if(binary.charAt(i) == '1') {
                value += Math.pow(2, power);
            }
            power++;
        }
        return value;
    }
0 голосов
/ 09 октября 2018

Не уверен, что учитель должен был делать это вручную, но если нет, то есть некоторые доступные встроенные функции, которые вы можете использовать:

// Convert binary String to integer:
// TODO: Surround with try-catch
int outputInt = Integer.parseInt(inputBinaryString, 2);

// Convert integer to binary String:
String outputBinaryString = Integer.toBinaryString(inputInt);

// Pad leading zeros to make the length 8:
String paddedResult = String.format("%8s", outputBinaryString).replace(' ', '0');

Попробуйте онлайн.

0 голосов
/ 09 октября 2018

Посмотрите, как это сделать, у вас есть подробный алгоритм здесь: https://javarevisited.blogspot.com/2015/01/how-to-convert-binary-number-to-decimal.html

Предполагаемая реализация алгоритма принимает int в качестве входных данных.Вот строковая версия:

public static int binaryToDecimal(String binary) {
     int decimal = 0;
     int power = 0;
     int currentIndex = binary.length() - 1;

     while (currentIndex>=0) {
         int currentDigit = binary.charAt(currentIndex) - '0';  //char to number conversion
         decimal += currentDigit * Math.pow(2, power);
         power++;
         currentIndex--;
     }
     return decimal;
 }

Преобразование символа в число необходимо, потому что нам нужно преобразовать символы '1' или '0' в число 1 или 0. Мы можем сделать это, используя asciiкод символов («0» = 48 и «1» = 49)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...