计算机中进制之间转换原理

2018.5.19 java

10进制转换成其他的都是除以要转换成的那个数,也就是说转换成二进制的就除以2,转换成八进制的就除以8,转换成十六进制的就除以16,然后倒取余数。具体例题如下

10—2:把20转换成二进制

20 2=10……….余数为0

10 2=5………..余数为0

5 2=2…………余数为1

2 2=1…………余数为0

1 2=0…………余数为1

则20换成二进制后是10100

10—8:把20转换成八进制

20 8=2………..余数为4

2 8=0…………余数为2

则20转换成八进制后是24

10—16:把20转换成十六进制

20 16=1……….余数为4

1 16=0………..余数为1

则20转换成十六进制后是14

2—10:把二进制数1101转换成十进制

1101=12的0次方+02的1次方+12的2次方+12的3次方=13

则1101变成十进制后是13

8—10:把八进制数1340转换成十进制

1340=08的0次方+48的1次方+38的2次方+18的3次方=736

则1340变成十进制后是736

16—10:把十六进制数3A4F转换成十进制

3A4F=1516的0次方+416的1次方+1016的2次方+316的3次方=14927

(十六进制中的A是10,F是15)

二进制与八进制的相互转换:

八进制数 0 1 2 3 4 5 6 7

二进制数 000 001 010 011 100 101 110 111

二进制与十六进制的相互转换:

十六进制 0 1 2 3 4 5 6 7 B

二进制数 0000 0001 0010 0011 0100 0101 0110 0111 1011

// 本文介绍的主要是java十进制数字类型转十六进制,由于十进制超出范围的问题。将超出范围的的数字转换为Long类型

,然后进行计算,同样可得到结果


package com.java.test;


public class JinZhi{
   public static void main(String args[]){
      JinZhi t = new JinZhi();
      String a = t.t1(1000L);
      System.out.println(a);
   }
   
   
   //把a转成指定进制
   private String t2(int a,int n){
      String str = "";
      //1:用a去除以n,得到商和余数
      int sun = a/n;
      int yuShu = a%n;
      str = ""+shuZhiToZhiMu(String.valueOf(yuShu));
      while(sun > 0 ){
         //2:继续用商去除以n,得到商和余数
         yuShu = sun % n;
         sun = sun / n;         
         //3:如果商为0,那么就终止         
         //4:把所有的余数倒序排列
         str = shuZhiToZhiMu(String.valueOf(yuShu)) + str;
      }
      System.out.println(n+"进制==="+str);
      return str;
   }
   //写一个方法实现:把一个十进制的数转换成为16进制的数
   private String t1(Long a){
      String str = "";
      //1:用a去除以16,得到商和余数
      Long sun = a/(16L);
      Long yuShu = a%16L;
      str = ""+shuZhiToZhiMu(String.valueOf(yuShu));
      while(sun > 0 ){
         //2:继续用商去除以16,得到商和余数
         yuShu = sun % 16;
         sun = sun / 16;         
         //3:如果商为0,那么就终止         
         //4:把所有的余数倒序排列
         str = shuZhiToZhiMu(String.valueOf(yuShu)) + str;
      }
      System.out.println("16进制==="+str);
      return str;
   }
   
   private String shuZhiToZhiMu(String a){ 
      switch(a){   //若jdk版本switch不支持String,可以将String转换为int类型后判断
         case "10" :
            return "a";
         case "11" :
           return "b";
         case "12" :
           return "c";
         case "13" :
           return "d";
         case "14" :
           return "e";    
         case "15" :
           return "f";  
      }
      return ""+a;
   }
}

//二转十
Integer.toBinaryString(int i);
//八转十
Integer.toOctalString(int i);
//十六转十
Integer.toHexString(int i);
//二转十
Integer.valueOf("1010",2).toString();
//八转十
Integer.valueOf("8765",8).toString();
//十六转十
Integer.valueOf("FFFF",16).toString();

更新列表:

*

参考文章:

[4]:

相关阅读