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

这篇具有很好参考价值的文章主要介绍了C++十进制与二进制之间的转换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

十进制转二进制

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

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

拿求救信号6举个例子:

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

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

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

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

c++十进制转化为二进制,c++,算法

所以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*+1*+1*=6

还是1100100,上图:

c++十进制转化为二进制,c++,算法

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

#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:本人小白,第一次写,多指正,望海涵【抱拳】【抱拳】文章来源地址https://www.toymoban.com/news/detail-719768.html

到了这里,关于C++十进制与二进制之间的转换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包