目录
一,基本概念
1.进制符号
2,进制的组成
二进制:0,1
八进制:0~7
十进制:0~9
十六进制:0~9 ,A(10),B(11),C(12),D(13),E(14),F(15) <注意:字母大写小写都可以>
3,概念
数制:各种进制的总称,如二进制、八进制等等。
对于任何一种进制—X进制,就表示每一位上的数运算时都是逢X进一位。
数码:指用数字形式表示的信息,如八进制有8个数码,分别是:0~7。
基数:数码的个数,如八进制有8个数码,那么它的基数是8。
位权/权:每一位具有的值,如八进制168的第3位的1的权就是1*8^2,是64
二,进制之间的转换
1,二,八,十六,N进制与十进制之间的转换
十进制转N进制: 整数部分除N取余,倒排;小数部分:乘N取整数,正排
N进制转十进制:乘位权,相加
2,二进制与八进制之间的转换
- 二进制与八进制关系图
得到二进制数每三位数为一组表示一个八位
二进制转八进制
八进制转二进制:按二进制与八进制关系图找数
3,二进制与十六进制的转换(和二转八类似)
- 二进制与十六进制关系图
得到二进制数每四位数为一组表示一个十六位
- 二进制转十六进制
- 十六进制转二进制:按二进制与十六进制关系图找数
4,八进制与十六进制之间的转换
先转换成二进制,再转换
5.例题
思路:不同进制数转换 先转十 再转换
int main(){
int n,m;
char c[100];
cin>>n;
scanf("%s",c);
cin>>m;
int l = strlen(c),i,sum1 = 0,index = 0;
//转换成十进制
for(i = l-1;i>=0;i--){
int ch = 0;
if(c[i]>='0'&&c[i]<='9'){
ch = c[i] - '0';
}else if(c[i]>='a'&&c[i]<='f'){
ch = c[i] - 'a' + 10;
}else{
ch = c[i] - 'A' + 10;
}
sum1 += ch*pow(n,index);
index++;
// cout<<sum1<<" ";
}
//十进制转换成其他进制
int num = 0,number;
char a[100];
do{
number = sum1 % m;
if(number<10){
a[num] = number+'0';
}else{
a[num] = number-10+'A';
}
// cout<<a[num]<<endl;
num++;
sum1 /= m;
}while(sum1!=0);
for(i = num-1;i>=0;i--){
cout<<a[i];
}
return 0;
}
本文含有隐藏内容,请 开通VIP 后查看