进制的转换

发布于:2022-12-12 ⋅ 阅读:(1001) ⋅ 点赞:(0)

目录

一,基本概念

1.进制符号

2,进制的组成

3,概念

二,进制之间的转换

1,二,八,十六,N进制与十进制之间的转换

2,二进制与八进制之间的转换  

3,二进制与十六进制的转换(和二转八类似)

4,八进制与十六进制之间的转换


一,基本概念

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 后查看

网站公告

今日签到

点亮在社区的每一天
去签到