diff --git a/maths/binary_to_decimal.rb b/maths/binary_to_decimal.rb new file mode 100644 index 0000000..af4c7b8 --- /dev/null +++ b/maths/binary_to_decimal.rb @@ -0,0 +1,26 @@ +=begin + +For any binary number of n digits i.e dn-1 ... d3 d2 d1 d0 +The equivalent decimal number is equal to the sum of binary digits (dn) times their power of 2 (2n): +decimal = d0×2^0 + d1×2^1 + d2×2^2 + ... + +=end + +def binary_to_decimal(n) + decimal = 0 + base = 1 + until n.zero? + x = n % 10 + n /= 10 + decimal += x * base + base *= 2 + end + return decimal +end + +puts "Decimal value of 110011 is " + binary_to_decimal(110011).to_s +# Decimal value of 110011 is 51 +puts "Decimal value of 11110 is " + binary_to_decimal(11110).to_s +# Decimal value of 11110 is 30 +puts "Decimal value of 101 is " + binary_to_decimal(101).to_s +# Decimal value of 101 is 5