将给定的 BCD 转换为其等效的二进制形式
原文:https://www . geesforgeks . org/convert-the-given-BCD-to-其等效二进制形式/
给定一个 BCD(二进制编码十进制),任务是将其转换为其等价的二进制数。 例:
输入: 1001000 输出: 110000 说明: 给定 BCD 的整数值为 48(0100 - > 4,1000 - > 8)。 (48)10=(110000)2 输入: 1001001 输出: 110001
方法:为了解决这个问题,我们需要将给定的 BCD 编号拆分为长度为 4 的二进制组块,并逐一将其转换为整数,以生成给定 BCD 的最终整数表示。生成后,将整数转换为二进制形式。 以下是上述办法的实施情况。
C++
// C++ code to convert BCD to its
// equivalent Binary
#include <bits/stdc++.h>
using namespace std;
// Function to convert BCD to Decimal
string bcdToBinary(string s)
{
int l = s.length();
int num = 0;
int mul = 1;
int sum = 0;
// If the length of given BCD is not
// divisible by 4
for (int i = l % 4 - 1; i >= 0; i--)
{
sum += (s[i] - '0') * mul;
mul *= 2;
}
num = sum;
sum = 0;
mul = pow(2, 3);
int ctr = 0;
for (int i = l % 4; i < l; i++)
{
ctr++;
sum += (s[i] - '0') * mul;
mul /= 2;
if (ctr == 4) {
num = num * 10 + sum;
sum = 0;
mul = pow(2, 3);
ctr = 0;
}
}
// Convert decimal to binary
string ans = "";
while (num > 0) {
ans += (char)(num % 2 + '0');
num /= 2;
}
reverse(ans.begin(), ans.end());
return ans;
}
// Driver Code
int main()
{
string s = "1001000";
// Function Call
cout << bcdToBinary(s);
return 0;
}
Java 语言(一种计算机语言,尤用于创建网站)
// Java code to convert BCD to its
// equivalent Binary
import java.io.*;
import java.util.*;
class GFG{
// Function to convert BCD to Decimal
static String bcdToBinary(String s)
{
int l = s.length();
int num = 0;
int mul = 1;
int sum = 0;
// If the length of given BCD is not
// divisible by 4
for(int i = l % 4 - 1; i >= 0; i--)
{
sum += (s.charAt(i) - '0') * mul;
mul *= 2;
}
num = sum;
sum = 0;
mul = (int)Math.pow(2, 3);
int ctr = 0;
for(int i = l % 4; i < l; i++)
{
ctr++;
sum += (s.charAt(i) - '0') * mul;
mul /= 2;
if (ctr == 4)
{
num = num * 10 + sum;
sum = 0;
mul = (int)Math.pow(2, 3);
ctr = 0;
}
}
// Convert decimal to binary
String ans = "";
while (num > 0)
{
ans += (char)(num % 2 + '0');
num /= 2;
}
StringBuilder ans1 = new StringBuilder();
// Append a string into StringBuilder input1
ans1.append(ans);
// Reverse StringBuilder input1
ans = ans1.reverse().toString();
return ans;
}
// Driver code
public static void main(String[] args)
{
String s = "1001000";
// Function call
System.out.println(bcdToBinary(s));
}
}
// This code is contributed by coder001
Python 3
# Python3 code to convert
# BCD to its equivalent Binary
# Function to convert
# BCD to Decimal
def bcdToBinary(s):
l = len(s)
num = 0;
mul = 1;
sum = 0;
# If the length of given
# BCD is not divisible by 4
for i in range(l % 4 - 1,
-1, -1):
sum += (ord(s[i]) -
ord('0')) * mul;
mul *= 2;
num = sum;
sum = 0;
mul = pow(2, 3);
ctr = 0;
for i in range(l % 4, l):
ctr += 1;
sum += (ord(s[i]) -
ord('0')) * mul;
mul //= 2;
if (ctr == 4):
num = num * 10 + sum;
sum = 0;
mul = pow(2, 3);
ctr = 0;
# Convert decimal to binary
ans = "";
while (num > 0):
ans += (chr((num % 2) +
ord('0')));
num //= 2;
ans = ans[:: -1]
return ans;
# Driver code
if __name__ == "__main__":
s = "1001000";
# Function Call
print(bcdToBinary(s));
# This code is contributed by rutvik_56
C
// C# code to convert BCD to its
// equivalent Binary
using System;
using System.Text;
public class GFG{
// Function to convert BCD to Decimal
static String bcdToBinary(String s)
{
int l = s.Length;
int num = 0;
int mul = 1;
int sum = 0;
// If the length of given BCD is not
// divisible by 4
for(int i = l % 4 - 1; i >= 0; i--)
{
sum += (s[i] - '0') * mul;
mul *= 2;
}
num = sum;
sum = 0;
mul = (int)Math.Pow(2, 3);
int ctr = 0;
for(int i = l % 4; i < l; i++)
{
ctr++;
sum += (s[i] - '0') * mul;
mul /= 2;
if (ctr == 4)
{
num = num * 10 + sum;
sum = 0;
mul = (int)Math.Pow(2, 3);
ctr = 0;
}
}
// Convert decimal to binary
String ans = "";
while (num > 0)
{
ans += (char)(num % 2 + '0');
num /= 2;
}
StringBuilder ans1 = new StringBuilder();
// Append a string into StringBuilder input1
ans1.Append(ans);
// Reverse StringBuilder input1
ans = reverse(ans1.ToString());
return ans;
}
static String reverse(String input)
{
char[] a = input.ToCharArray();
int l, r = a.Length - 1;
for (l = 0; l < r; l++, r--)
{
char temp = a[l];
a[l] = a[r];
a[r] = temp;
}
return String.Join("",a);
}
// Driver code
public static void Main(String[] args)
{
String s = "1001000";
// Function call
Console.WriteLine(bcdToBinary(s));
}
}
// This code is contributed by shikhasingrajput
java 描述语言
<script>
// Javascript code to convert BCD to its
// equivalent Binary
// Function to convert BCD to Decimal
function bcdToBinary(s)
{
let l = s.length;
let num = 0;
let mul = 1;
let sum = 0;
// If the length of given BCD is not
// divisible by 4
for (let i = l % 4 - 1; i >= 0; i--)
{
sum += (s[i].charCodeAt(0) - '0'.charCodeAt(0)) * mul;
mul *= 2;
}
num = sum;
sum = 0;
mul = Math.pow(2, 3);
let ctr = 0;
for (let i = l % 4; i < l; i++) {
ctr++;
sum += (s[i].charCodeAt(0) - '0'.charCodeAt(0)) * mul;
mul = Math.floor(mul / 2);
if (ctr == 4) {
num = num * 10 + sum;
sum = 0;
mul = Math.pow(2, 3);
ctr = 0;
}
}
// Convert decimal to binary
let ans = "";
while (num > 0) {
ans += String.fromCharCode(num % 2 + '0'.charCodeAt(0));
num = Math.floor(num / 2);
}
ans = ans.split("").reverse().join("")
console.log(ans)
return ans;
}
// Driver Code
let s = "1001000";
// Function Call
document.write(bcdToBinary(s));
// This code is contributed by _saurabh_jaiswal
</script>
Output:
110000
时间复杂度: O(N) 其中 N 表示提供的 BCD 字符串的长度 辅助空间: O(1)
版权属于:月萌API www.moonapi.com,转载请注明出处