Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private static long convertBinaryToDecimal(long number) {
- ArrayList<Long> list = new ArrayList<>(); // a list of separate digits of the number being converted
- LinkedList<Long> stack = new LinkedList<>(); // a stack used to put the digits onto the list in the right order after separating them
- while (number > 0) { // get separate digits of the number, put them on a stack
- stack.push(number % 10);
- number = number / 10;
- }
- while (!stack.isEmpty()) { // put digits onto the list in correct order
- list.add(stack.pop());
- }
- long decimalNumber = 0;
- int digits = list.size() - 1;
- for (long item : list) { // converts into decimal using base-q expansion representation of the number
- decimalNumber += item << digits;
- digits--;
- }
- return decimalNumber;
- }
- ______________________________
- private static BigInteger convertBinaryToDecimalBigInteger(BigInteger number) {
- ArrayList<BigInteger> list = new ArrayList<>(); // a list of separate digits of the number being converted
- LinkedList<BigInteger> stack = new LinkedList<>(); // a stack used to put the digits onto the list in the right order after separating them
- while (number.compareTo(BigInteger.valueOf(0)) > 0) { // get separate digits of the number, put them on a stack
- stack.push(number.mod(BigInteger.valueOf(10)));
- number = number.divide(BigInteger.valueOf(10));
- }
- while (!stack.isEmpty()) { // put digits onto the list in correct order
- list.add(stack.pop());
- }
- BigInteger decimalNumber = BigInteger.valueOf(0);
- int digits = list.size() - 1;
- BigInteger base = BigInteger.valueOf(2);
- for (BigInteger item : list) { // converts into decimal using base-q expansion representation of the number
- BigInteger powerOfTwo = base.pow(digits);
- decimalNumber = decimalNumber.add(item.multiply(powerOfTwo));
- digits--;
- }
- return decimalNumber;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement