前言
在计算机学中,有很多的进制,像计算机用的二进制,人们使用的十进制,还有能表示颜色的十六进制,今天,我们就来学习这三种进制之间常见的转换方式
1.10=>2 十进制比较常见的转换方法是用短除法(对,你没听错,就是数学里的短除法)见下图
如图,转换方式是拿样例15对2取余,再把余数从下往上进行表示,最后得到的就是结果
讲完日常的转换方式,再来看一看在C++里如何表示
#include<bits/stdc++.h>
using namespace std;
string s;//用来存放结果的s
int main(){
long long n;
cin>>n;//输入十进制数n
while(n!=0){
s+=('0'+n%2);//存入字符串
n/=2;//为了把算过的去掉
}
for(int i=s.size()-1;i>=0;i--) cout<<s[i];//倒序输出
return 0;
}
2.10=>16 与十转二一样,都是用短除法,但有一点不同,由于16进制的数有可能超过9,这就不在数字的表示范围内了,所以在十进制中的10~15在16进制里用A-F来表示。(如下图)
再来看一看在程序里的表示
#include<bits/stdc++.h>
using namespace std;
string s;//存储结果
int main(){
long long n;
cin>>n;//输入十进制数
while(n!=0){
int c=n%16;
if(c<=9) s+=('0'+c);//小于十.....
else s+=('A'+c-10);//如果大于十.....
n/=16;
}
for(int i=s.size()-1;i>=0;i--) cout<<s[i];//倒序输出
return 0;
}
小结
综合以上的两个方法,可以总结出一个规律,那么就是:
十进制的n转m进制
用n对m连续取余,直到商为零停止,然后将余数倒着表示就是结果
以下是程序表示(m<16)
#include<bits/stdc++.h>
using namespace std;
string s;//存储结果
long long n,m;
int main(){
cin>>n>>m;//输入十进制数与要转换的进制
while(n!=0){
int c=n%m;
if(c<=9) s+=('0'+c);//小于十.....
else s+=('A'+c-10);//如果大于十.....
n/=16;
}
for(int i=s.size()-1;i>=0;i--) cout<<s[i];//倒序输出
return 0;
}
未完待续:进制转换(2)