首页 文章资讯内容详情

C++二进制转十进制递归程序

2026-06-02 1 花语

我们得到一个包含二进制数的字符串。目标是使用递归方法找到等效的十进制数。

可以使用以下方法将二进制数转换为十进制数-:从LSB到MSB并乘以2i的幂,其中0<=i<=no。数字和所有以前的结果。

让我们看看这个的各种输入输出场景-

输入 -binStr[]="110010"

输出 -给定二进制的等效十进制:50

解释-如果我们将110010转换为十进制,那么数字将是:-

=0*20+1*21+0*22+0*23+1*24+1*25

=0+2+0+0+16+32

=50

输入 -binStr[]="0011"

输出 -给定二进制的等效十进制:3

说明-如果我们将110010转换为十进制,则数字将是:-

=1*20+1*21+0*22+0*23

=1+2+0+0

=3

下面程序中使用的方法如下

在这种方法中,我们使用递归函数bintoDecimal(strBin,length),它接受输入字符串及其长度,并将每个字符转换为十进制并乘以2i。将以前的结果添加到它。

获取包含二进制数的输入字符串strBin[]。

使用计算其长度strlen(strBin)。

函数bintoDecimal(strBin,length)接受输入并返回使用递归方法计算的数字。

如果我们最后一个字符是LSB,则返回它的十进制,因为它是相同的。(乘以1i.e20)

否则设置temp=binary[i]-0。它的十进制值。

现在使用temp<<len-i-1将temp与2len-i-1相乘。

使用temp=temp+bintoDecimal(binary,len,i+1)将其他数字的结果添加到temp。

在递归结束时返回温度。

在main中打印计算出的小数点。

示例

#include<bits/stdc++.h> using namespace std; int bintoDecimal(char binary[],int len, int i=0){ if (i == len-1) return (binary[i] - 0); int temp=binary[i]-0; temp=temp<<len-i-1; temp=temp+bintoDecimal(binary,len,i+1); return (temp); } int main(){ char strBin[] = "11010"; int length=strlen(strBin); cout <<"给定二进制的等效十进制: "<<bintoDecimal(strBin,length) << endl; return 0; }输出结果

如果我们运行上面的代码,它将生成以下输出

给定二进制的等效十进制: 26