Dada una string de número binario n . Convierte n fraccionario binario en su equivalente decimal.
Ejemplos:
Input: n = 110.101 Output: 6.625 Input: n = 101.1101 Output: 5.8125
Los siguientes son los pasos para convertir fracciones binarias a decimales.
A) Convertir la parte integral del equivalente binario a decimal
- Multiplique cada dígito por separado desde el lado izquierdo del punto base hasta el primer dígito por 2 0 , 2 1 , 2 2 ,… respectivamente.
- Agregue todo el resultado proveniente del paso 1.
- Número decimal integral equivalente sería el resultado obtenido en el paso 2.
B) Convertir la parte fraccionaria de binario a decimal equivalente
- Divide cada dígito desde el lado derecho del punto base hasta el final por 2 1 , 2 2 , 2 3 , … respectivamente.
- Agregue todo el resultado proveniente del paso 1.
- El número decimal fraccionario equivalente sería el resultado obtenido en el paso 2.
C) Suma tanto la parte entera como la fraccionaria del número decimal.
Ilustración
Let's take an example for n = 110.101 Step 1: Conversion of 110 to decimal => 1102 = (1*22) + (1*21) + (0*20) => 1102 = 4 + 2 + 0 => 1102 = 6 So equivalent decimal of binary integral is 6. Step 2: Conversion of .101 to decimal => 0.1012 = (1*1/2) + (0*1/22) + (1*1/23) => 0.1012 = 1*0.5 + 0*0.25 + 1*0.125 => 0.1012 = 0.625 So equivalent decimal of binary fractional is 0.625 Step 3: Add result of step 1 and 2. => 6 + 0.625 = 6.625
Implementación:
C++
// C++ program to demonstrate above steps of // binary fractional to decimal conversion #include<bits/stdc++.h> using namespace std; // Function to convert binary fractional to // decimal double binaryToDecimal(string binary, int len) { // Fetch the radix point size_t point = binary.find('.'); // Update point if not found if (point == string::npos) point = len; double intDecimal = 0, fracDecimal = 0, twos = 1; // Convert integral part of binary to decimal // equivalent for (int i = point-1; i>=0; --i) { // Subtract '0' to convert character // into integer intDecimal += (binary[i] - '0') * twos; twos *= 2; } // Convert fractional part of binary to // decimal equivalent twos = 2; for (int i = point+1; i < len; ++i) { fracDecimal += (binary[i] - '0') / twos; twos *= 2.0; } // Add both integral and fractional part return intDecimal + fracDecimal; } // Driver code int main() { string n = "110.101"; cout << binaryToDecimal(n, n.length()) << "\n"; n = "101.1101"; cout << binaryToDecimal(n, n.length()); return 0; }
Java
// Java program to demonstrate above steps of // binary fractional to decimal conversion import java.io.*; class GFG{ // Function to convert binary fractional to // decimal static double binaryToDecimal(String binary, int len) { // Fetch the radix point int point = binary.indexOf('.'); // Update point if not found if (point == -1) point = len; double intDecimal = 0, fracDecimal = 0, twos = 1; // Convert integral part of binary to decimal // equivalent for(int i = point - 1; i >= 0; i--) { intDecimal += (binary.charAt(i) - '0') * twos; twos *= 2; } // Convert fractional part of binary to // decimal equivalent twos = 2; for(int i = point + 1; i < len; i++) { fracDecimal += (binary.charAt(i) - '0') / twos; twos *= 2.0; } // Add both integral and fractional part return intDecimal + fracDecimal; } // Driver Code public static void main(String[] args) { String n = "110.101"; System.out.println( binaryToDecimal(n, n.length())); n = "101.1101"; System.out.println( binaryToDecimal(n, n.length())); } } // This code is contributed by dheeraj_2801
Python3
# Python3 program to demonstrate above steps # of binary fractional to decimal conversion # Function to convert binary fractional # to decimal def binaryToDecimal(binary, length) : # Fetch the radix point point = binary.find('.') # Update point if not found if (point == -1) : point = length intDecimal = 0 fracDecimal = 0 twos = 1 # Convert integral part of binary # to decimal equivalent for i in range(point-1, -1, -1) : # Subtract '0' to convert # character into integer intDecimal += ((ord(binary[i]) - ord('0')) * twos) twos *= 2 # Convert fractional part of binary # to decimal equivalent twos = 2 for i in range(point + 1, length): fracDecimal += ((ord(binary[i]) - ord('0')) / twos); twos *= 2.0 # Add both integral and fractional part ans = intDecimal + fracDecimal return ans # Driver code : if __name__ == "__main__" : n = "110.101" print(binaryToDecimal(n, len(n))) n = "101.1101" print(binaryToDecimal(n, len(n))) # This code is contributed # by aishwarya.27
C#
// C# program to demonstrate above steps of // binary fractional to decimal conversion using System; class GFG{ // Function to convert binary fractional to // decimal static double binaryToDecimal(string binary, int len) { // Fetch the radix point int point = binary.IndexOf('.'); // Update point if not found if (point == -1) point = len; double intDecimal = 0, fracDecimal = 0, twos = 1; // Convert integral part of binary to decimal // equivalent for(int i = point - 1; i >= 0; i--) { intDecimal += (binary[i] - '0') * twos; twos *= 2; } // Convert fractional part of binary to // decimal equivalent twos = 2; for(int i = point + 1; i < len; i++) { fracDecimal += (binary[i] - '0') / twos; twos *= 2.0; } // Add both integral and fractional part return intDecimal + fracDecimal; } // Driver Code public static void Main(string[] args) { string n = "110.101"; Console.Write( binaryToDecimal(n, n.Length) + "\n"); n = "101.1101"; Console.Write( binaryToDecimal(n, n.Length)); } } // This code is contributed by rutvik_56
Javascript
<script> // JavaScript program to demonstrate above steps of // binary fractional to decimal conversion // Function to convert binary fractional to // decimal function binaryToDecimal(binary, len) { // Fetch the radix point var point = binary.indexOf("."); // Update point if not found if (point === -1) point = len; var intDecimal = 0, fracDecimal = 0, twos = 1; // Convert integral part of binary to decimal // equivalent for (var i = point - 1; i >= 0; i--) { intDecimal += (binary[i] - "0") * twos; twos *= 2; } // Convert fractional part of binary to // decimal equivalent twos = 2; for (var i = point + 1; i < len; i++) { fracDecimal += (binary[i] - "0") / twos; twos *= 2.0; } // Add both integral and fractional part return intDecimal + fracDecimal; } // Driver Code var n = "110.101"; document.write(binaryToDecimal(n, n.length) + "<br>"); n = "101.1101"; document.write(binaryToDecimal(n, n.length)); </script>
6.625 5.8125
Complejidad temporal: O(len(n))
Espacio auxiliar: O(len(n))
Donde len es el total de dígitos contenidos en el número binario de n.
Ver esto: Convertir fracción decimal a número binario.
Este artículo es una contribución de Shubham Bansal . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA