Advertisement
joxaren

binaryToDecimalAlgorithms

Apr 11th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.11 KB | None | 0 0
  1. private static long convertBinaryToDecimal(long number) {
  2.         ArrayList<Long> list = new ArrayList<>(); // a list of separate digits of the number being converted
  3.         LinkedList<Long> stack = new LinkedList<>(); // a stack used to put the digits onto the list in the right order after separating them
  4.  
  5.         while (number > 0) { // get separate digits of the number, put them on a stack
  6.             stack.push(number % 10);
  7.             number = number / 10;
  8.         }
  9.  
  10.         while (!stack.isEmpty()) { // put digits onto the list in correct order
  11.             list.add(stack.pop());
  12.         }
  13.  
  14.         long decimalNumber = 0;
  15.         int digits = list.size() - 1;
  16.         for (long item : list) { // converts into decimal using base-q expansion representation of the number
  17.             decimalNumber += item << digits;
  18.             digits--;
  19.         }
  20.         return decimalNumber;
  21.     }
  22.  
  23. ______________________________
  24.  
  25.     private static BigInteger convertBinaryToDecimalBigInteger(BigInteger number) {
  26.         ArrayList<BigInteger> list = new ArrayList<>(); // a list of separate digits of the number being converted
  27.         LinkedList<BigInteger> stack = new LinkedList<>(); // a stack used to put the digits onto the list in the right order after separating them
  28.  
  29.         while (number.compareTo(BigInteger.valueOf(0)) > 0) { // get separate digits of the number, put them on a stack
  30.             stack.push(number.mod(BigInteger.valueOf(10)));
  31.             number = number.divide(BigInteger.valueOf(10));
  32.         }
  33.  
  34.         while (!stack.isEmpty()) { // put digits onto the list in correct order
  35.             list.add(stack.pop());
  36.         }
  37.  
  38.         BigInteger decimalNumber = BigInteger.valueOf(0);
  39.         int digits = list.size() - 1;
  40.         BigInteger base = BigInteger.valueOf(2);
  41.         for (BigInteger item : list) {  // converts into decimal using base-q expansion representation of the number
  42.             BigInteger powerOfTwo = base.pow(digits);
  43.             decimalNumber = decimalNumber.add(item.multiply(powerOfTwo));
  44.             digits--;
  45.         }
  46.         return decimalNumber;
  47.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement