要求:输入仅由0和1构成的整数(也就是“二进制”整数),打印出该数对应的十进制。
先复习一下方法吧
二进制转十进制
方法为:把二进制数按权展开、相加即得十进制数。
就是通过运用取模和除法运算符,就可以从这个“二进制”整数中,按从右至左的顺序次“剔”出一个二进制”位的数字。我们都知道,在十进制计数体制中,最右数字置值为1,然后向左的数字依次的位置值是10、100、1000等。同理,在二进制计制中,最右数字的位置值为1,然后向左的数字依次的位置值是2、4、8,等等。
例如二进制数234可以理解成2*100+3*10+4*1,而与二进制数1101等价的十进是1*1+0*2+1*4+1*8或1+0+4+8,也就是13。
好啦,下面就是具体的代码实现:
//二进制转十进制
//10010-->1*2^4+0*2^3+0*2^2+1*2^1+0*2^0=18
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
class Change
{
private:
int i,j,num;
public:
Change()
{
}
void setNum()
{
string n;
int sum = 0;
cout << "Please enter an integer consisting of 0 and 1" << endl;
cin >> n;
for( i = 0 ; i < n.length() ; i++)
{
if(n[i]=='1')
{
j = pow(2,n.length()-i-1);
sum += j;
}
}
cout << "The decimal representation of the number is: " << endl;
cout << sum << endl;
}
};
int main()
{
Change a;
a.setNum() ;
return 0;
}
还有什么疑问,欢迎在下面评论区提出。