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

Main:

public class Main{                                      
  public static void main(String[] args){                                       
    System.out.println(Convert.BtoI("10001"));                                  
    System.out.println(Convert.BtoI("101010101"));                                              
  }                                     
}

Класс:

public class Convert{                                       
  public static int BtoI(String num){                                       
    Integer i= Integer.parseInt(num,2);                                     
    return i;                                       
  }                                     
}

Так что я работал над конвертерами, я боролся, поскольку я новичок в Java, и мой друг предложил использовать целочисленный метод, которыйработает.Однако какой метод будет наиболее эффективным для преобразования с использованием базовых операторов (например, логических, арифметических и т. Д.)

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

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

Правильно:

  • это работает, и
  • это лучший способ.

Однако,какой метод будет наиболее эффективным для преобразования с использованием базовых операторов (например, логические, арифметические и т. д.)

  • Если вы новичок в Java, вы не должны зацикливаться на эффективностивашего кода.У вас нет интуиции.

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

  • Даже если это «горячая точка» производительности в вашем приложении, код Integer.parseint (без сомнения) уже хорошо оптимизирован.Существует мало шансов, что вы могли бы добиться значительно большего успеха, используя «примитивные» операции.(Под капотом методы, скорее всего, уже будут делать то же самое, что и вы.)


Если вы просто спрашиваете этопотому что вам любопытно взглянуть на исходный код класса Integer.

0 голосов
/ 10 декабря 2018

Если вы хотите использовать базовую арифметику для преобразования двоичных чисел в целые, то вы можете заменить метод BtoI () в классе Convert следующим кодом.

public static int BtoI(String num){                                       
        int number = 0; // declare the number to store the result
        int power = 0; // declare power variable

        // loop from end to start of the binary number
        for(int i = num.length()-1; i >= 0; i--)
        {
            // check if the number encountered is 1
            /// if yes then do 2^Power and add to the result
            if(num.charAt(i) == '1')
                number += Math.pow(2, power);
            // increment the power to use in next iteration
            power++;
        }
        // return the number
        return number;
      }  

Выполнен нормальный расчетв приведенном выше коде, чтобы получить результат.например, 101 => 1 * 2 ^ 2 + 0 + 1 * 2 ^ 0 = 5

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