# Kotlin Program to Convert Large Binary Number to Decimal

Given a Large Binary Number as Input. Now, write a Kotlin Program to Convert Large Binary Number to decimal number.

```Input:
110000000000000111111

Output:
Equivalent decimal: 1572927
```

## 1. Program to Convert Binary to Decimal

###### Pseudo Algorithm
• Key Idea is to use string for input instead of int type, and Long for Output just to increase the range of output.
• Initialise a variable decimalVal, that stores equivalent decimal value, with 0
• Extract each character from the string.
• While extracting, check if character is 1. If yes, multiply the extracted character with proper base (power of 2).
• For example, if binary number is 110, decimalVal = 1 * (2^2) + 1 * (2^1) = 6

Sourcecode –

```fun main() {

println("Enter n:")

val countDigit = binaryN!!.length -1

var decimalVal: Long = 0

var base = 1
for(pos in countDigit downTo 0) {
val curChar = binaryN[pos]
if(curChar == '1') {
decimalVal += base
}
base *= 2

if(!(curChar == '1' || curChar == '0')) {
decimalVal = -1
println("\$binaryN is not binary number.")
break
}
}

if(decimalVal != (-1).toLong()) {
println("Equivalent decimal: \$decimalVal")
}
}
```

When you run the program, output will be –

```Enter n:
110000000000000000000000
Equivalent decimal: 12582912
```
###### Explanation:
• Run a loop from end to first character of the string.
• At each position, check if character at that position is 1. If yes, add base in decimalVal.
• Note that base value is calculated for each position. If you observe carefully, base is actually power of 2 for each position in the string.
• Finally, at postion = 0, we get final decimal value.
• Note that we also check, at every position, if character is 0 or 1. It is neither 0 nor 1, it means given string is not binary. So, print error message.

Thus, we went through Kotlin Program to Convert Large Binary Number to Decimal Number