admin管理员组

文章数量:1794759

进制转换详解

进制转换详解

目录

进制转换之间的关系

十进制转换为二进制(求二进制)

二进制转换成十进制(求十进制)

二进制转换为九进制



进制转换之间的关系

任意进制<--->十进制<--->任意进制

1.任意进制转为十进制

2.十进制转为任意进制

3.任意进制转为任意进制(例如二进制转为九进制)

十进制转换为二进制(求二进制)

十进制转化为二进制常用的方法是辗转相除法,方法如下:

1011=1*2^3+0*2^2+1*2+1*2^0

左边表示二进制,右边计算得出来的数为十进制的数,所有的进制都可以用这种方法表示

十进制转为二进制(求二进制):

#include<iostream> using namespace std; int main() { int n,len; int num[15]; while(scanf("%d",&n)!=EOF) { len=0; while(n!=0)//循环结束登条件,当商为零的时候结束 { num[len++] = n%2;//将每次对2求余得到的数字存到数组里面 n/=2;//n=n/2 更新n,需要得到除以二之后的数 } while(len--)//用len来输出,因为每进行一次除法,len就加一,所以输出的时候刚好到len为0的时候输出完 { printf("%d",num[len]); } printf("\\n"); } return 0; }

二进制转换成十进制(求十进制):

经过1011=1*2^3+0*2^2+1*2+1*2^0这个式子可以发现规律,从而得到ans=asn*2+s[i]

#include<iostream> using namespace std; int main() { string s; cin>>s; int ans=0; for(int i=0;i<s.length();i++) { ans=ans*2+s[i]-'0';//如果其他进制只需修改2即可 } cout<<ans<<endl; return 0; } 二进制转换为九进制

可以先将二进制转换成十进制得到一个数,然后再将十进制转换成九进制。 

本文标签: 详解