十进制转二进制
一般采用"除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*+1*+1*=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!文章来源:https://www.toymoban.com/news/detail-719768.html
PS:本人小白,第一次写,多指正,望海涵【抱拳】【抱拳】文章来源地址https://www.toymoban.com/news/detail-719768.html
到了这里,关于C++十进制与二进制之间的转换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!