C++二进制转十进制

要求:输入仅由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;
} 

还有什么疑问,欢迎在下面评论区提出。

猜你喜欢

转载自blog.csdn.net/weixin_74287172/article/details/130547624