C++十进制与二进制之间的转换

十进制转二进制

一般采用"除2取余,逆序排列"法:

也就是将一个十进制数不断除2,将每次得到的余数倒序从后向前排列。

拿求救信号6举个例子:

6/2=3……0  末位就是0

3/2=1……1   前一位就是1

1/2=0……1  再前一位就是1

再画个图辅助理解,这回试试100:

所以100的二进制表达就是1100100

那用C++代码怎么表示呢,其实也简单

用一个数组,把每次模2的结果存一下,再倒序输出就OK了

话不多说,直接上码:

#include<iostream>
using namespace std;
int main()
{
	int a,b,n[1000],i=0;
	cin>>a;
	b=a;
	while(b>0)
	{
		n[i]=b%2;
		b/=2;
		i++;
	}
	for(int j=i-1;j>=0;j--)  //这里要注意j=i-1,因为最后一次i++导致i比数组用的位数多1
	{
		cout<<n[j];
	}
	return 0;
}

其实不只是二进制,几进制都一样,就是“除n取余,逆序排列”

二进制转十进制

一般采用的方法是把二进制数的每一位拆开,从末尾开始,每个数乘以2的n次幂,n从0开始取,每前一位n就大1,再把每位得到的数相加。

仍以求救信号110为例:

把110拆开:1,1,0

0*2^{0}+1*2^{1}+1*2^{2}=6

还是1100100,上图:

具体思路和上一个一样,直接上码:

#include<iostream>
using namespace std;
int main()
{
	int a,b,n[10000],i=0,x=0,m; 
	cin>>a;
	b=a;
	while(b)
	{
		n[i]=b%10;
		m=n[i];
		for(int j=0;j<i;j++)
		{
			m*=2;	
		}
		x+=m;
		b/=10;
		i++;
	}
	cout<<x;
	return 0; 
 } 

over!

PS:本人小白,第一次写,多指正,望海涵【抱拳】【抱拳】

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值