Dado un número BCD (decimal codificado en binario), la tarea es convertir el número BCD en su número decimal equivalente .
Ejemplos:
Entrada: BCD = 100000101000
Salida: 828
Explicación:
Al dividir el número en partes de 4, se convierte en 1000 0010 1000 .
Aquí, 1000 es equivalente a 8 y
0010 es equivalente a 2 .
Entonces, el número se convierte en 828 .Entrada: BCD = 1001000
Salida: 48
Explicación:
Al dividir el número en partes de 4, se convierte en 0100 1000 .
Aquí, 0100 es equivalente a 4 y
1000 es equivalente a 8 .
Entonces, el número se convierte en 48 .
Acercarse:
- Iterar sobre todos los bits en números BCD dados.
- Divide el número BCD dado en partes de 4 y comienza a calcular su número decimal equivalente .
- Almacene este número formado en una variable llamada suma .
- Comience a encuadrar un número a partir de los dígitos almacenados en la suma en una variable num .
- Invierta el número formado hasta ahora y devuelva ese número.
A continuación se muestra la implementación del enfoque anterior.
C++
// C++ code to convert BCD to its // decimal number(base 10). // Including Header Files #include <bits/stdc++.h> using namespace std; // Function to convert BCD to Decimal int bcdToDecimal(string s) { int len = s.length(), check = 0, check0 = 0; int num = 0, sum = 0, mul = 1, rev = 0; // Iterating through the bits backwards for (int i = len - 1; i >= 0; i--) { // Forming the equivalent // digit(0 to 9) // from the group of 4. sum += (s[i] - '0') * mul; mul *= 2; check++; // Reinitialize all variables // and compute the number. if (check == 4 || i == 0) { if (sum == 0 && check0 == 0) { num = 1; check0 = 1; } else { // update the answer num = num * 10 + sum; } check = 0; sum = 0; mul = 1; } } // Reverse the number formed. while (num > 0) { rev = rev * 10 + (num % 10); num /= 10; } if (check0 == 1) return rev - 1; return rev; } // Driver Code int main() { string s = "100000101000"; // Function Call cout << bcdToDecimal(s); return 0; }
Java
// Java code to convert BCD to its // decimal number(base 10). // Including Header Files import java.io.*; import java.util.*; class GFG { // Function to convert BCD to Decimal public static int bcdToDecimal(String s) { int len = s.length(); int check = 0, check0 = 0; int num = 0, sum = 0; int mul = 1, rev = 0; // Iterating through the bits backwards for(int i = len - 1; i >= 0; i--) { // Forming the equivalent // digit(0 to 9) // from the group of 4. sum += (s.charAt(i) - '0') * mul; mul *= 2; check++; // Reinitialize all variables // and compute the number. if (check == 4 || i == 0) { if (sum == 0 && check0 == 0) { num = 1; check0 = 1; } else { // Update the answer num = num * 10 + sum; } check = 0; sum = 0; mul = 1; } } // Reverse the number formed. while (num > 0) { rev = rev * 10 + (num % 10); num /= 10; } if (check0 == 1) return rev - 1; return rev; } // Driver code public static void main(String[] args) { String s = "100000101000"; // Function Call System.out.println(bcdToDecimal(s)); } } // This code is contributed by coder001
Python3
# Python3 code to convert BCD to its # decimal number(base 10). # Function to convert BCD to Decimal def bcdToDecimal(s): length = len(s); check = 0; check0 = 0; num = 0; sum = 0; mul = 1; rev = 0; # Iterating through the bits backwards for i in range(length - 1, -1, -1): # Forming the equivalent # digit(0 to 9) # from the group of 4. sum += (ord(s[i]) - ord('0')) * mul; mul *= 2; check += 1; # Reinitialize all variables # and compute the number if (check == 4 or i == 0): if (sum == 0 and check0 == 0): num = 1; check0 = 1; else: # Update the answer num = num * 10 + sum; check = 0; sum = 0; mul = 1; # Reverse the number formed. while (num > 0): rev = rev * 10 + (num % 10); num //= 10; if (check0 == 1): return rev - 1; return rev; # Driver Code if __name__ == "__main__": s = "100000101000"; # Function Call print(bcdToDecimal(s)); # This code is contributed by AnkitRai01
C#
// C# code to convert BCD to its // decimal number(base 10). // Including Header Files using System; class GFG { // Function to convert BCD to Decimal public static int bcdToDecimal(String s) { int len = s.Length; int check = 0, check0 = 0; int num = 0, sum = 0; int mul = 1, rev = 0; // Iterating through the bits backwards for(int i = len - 1; i >= 0; i--) { // Forming the equivalent // digit(0 to 9) // from the group of 4. sum += (s[i] - '0') * mul; mul *= 2; check++; // Reinitialize all variables // and compute the number. if (check == 4 || i == 0) { if (sum == 0 && check0 == 0) { num = 1; check0 = 1; } else { // Update the answer num = num * 10 + sum; } check = 0; sum = 0; mul = 1; } } // Reverse the number formed. while (num > 0) { rev = rev * 10 + (num % 10); num /= 10; } if (check0 == 1) return rev - 1; return rev; } // Driver code public static void Main(String[] args) { String s = "100000101000"; // Function Call Console.WriteLine(bcdToDecimal(s)); } } // This code is contributed by 29AjayKumar
Javascript
<script> // Javascript code to convert BCD to its // decimal number(base 10). // Including Header Files // Function to convert BCD to Decimal function bcdToDecimal(s) { let len = s.length; let check = 0, check0 = 0; let num = 0, sum = 0; let mul = 1, rev = 0; // Iterating through the bits backwards for(let i = len - 1; i >= 0; i--) { // Forming the equivalent // digit(0 to 9) // from the group of 4. sum += (s[i] - '0') * mul; mul *= 2; check++; // Reinitialize all variables // and compute the number. if (check == 4 || i == 0) { if (sum == 0 && check0 == 0) { num = 1; check0 = 1; } else { // Update the answer num = num * 10 + sum; } check = 0; sum = 0; mul = 1; } } // Reverse the number formed. while (num > 0) { rev = rev * 10 + (num % 10); num = Math.floor(num / 10); } if (check0 == 1) return rev - 1; return rev; } // Driver Code let s = "100000101000"; // Function Call document.write(bcdToDecimal(s.split(''))); </script>
828
Complejidad de tiempo: O(N)
Complejidad de espacio auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por yashbeersingh42 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA