爱问知识人 爱问教育 医院库
首页 >
电脑/网络
程序设计
JAVA相关

Java编程基础学习之不同进制的转换方法是什么?

Java编程基础学习之不同进制的转换方法是什么?
沵*** | 2018-08-16 15:28:29

全部答案(共2个回答)

    2018-08-16 15:55:29
  • 同一数值可以在不同进制之间的转换,具体转换方式如下:
      一、二进制与十进制的转换
      (1)二进制转十进制
      按权相加法,即将二进制每位上的数乘以权(N进制,整数部分第i位的权为N(i-1),小数部分第i位权为N-i),然后相加的和即是十进制。
      如将二进制数101.101转换为十进制,具体示例如下:
      1 22 + 0 21 + 1 20 + 1 2-1 + 0 2-2 + 1 2-3 ...

    查看全部>>

    同一数值可以在不同进制之间的转换,具体转换方式如下:
      一、二进制与十进制的转换
      (1)二进制转十进制
      按权相加法,即将二进制每位上的数乘以权(N进制,整数部分第i位的权为N(i-1),小数部分第i位权为N-i),然后相加的和即是十进制。
      如将二进制数101.101转换为十进制,具体示例如下:
      1 22 + 0 21 + 1 20 + 1 2-1 + 0 2-2 + 1 2-3 = 5.625
      上述表达式可以简写,具体示例如下:
      1 22 + 1 20 + 1 2-1 + 1 2-3 = 5.625
      (2)十进制转二进制
      十进制转二进制要分为整数部分和小数部分。
      ① 整数部分
      除2取余法,即每次将整数部分除以2,余数为权位上的数,商继续除以2,直到商为0为止,余数逆序读取即是二进制值。
      如将十进制数10转换为二进制,转换方法,如图所示。
      在上图所示中余数逆序读取的值为1010,即是十进制10的二进制值。
      ② 小数部分
      乘2取整法,即将小数部分乘以2,取整数部分,剩余小数部分继续乘以2,直到小数部分为0为止,整数部分顺序读取即是二进制值。
      如将十进制值0.125转换为二进制,转换方式,如图所示。
      在上图中整数顺序读取值为0.001,即是十进制0.125的二进制值。
      二、二进制与八进制的转换
      数学关系23=8、24=16,而八进制和十六进制由此关系衍生而来的,即用三位二进制表示一个八进制,用四位二进制表示一个十六进制。
      (1)二进制转八进制
      取三合一法,即从二进制的分界点(小数点),向左(向右)每三位取成一位,将这三位二进制按权相加,得到的数就是一位八进制数,然后按顺序进行排列,小数点的位置不变,得到的数即是八进制数。如果无法凑足三位,则补0,凑足三位。
      如将二进制数1101.1转换为八进制,转换方式,如图所示。
      在上图,先从小数点开始每三位取成一位,不足补0,将三位二进制按权相加,所得数按顺序读取值为15.4,即是二进制1101.1的八进制值。
      (2)八进制转二进制
      取一分三法,即将一位八进制数分解成三位二进制数,用三位二进制按权相加去凑这位八进制数,小数点位置照旧。
      如将八进制数63.2转换为二进制,转换方式,如图所示。
      二进制与八进制转换过程中的数值的对应关系,如表所示。
      三、二进制与十六进制的转换
      和二进制与八进制转换类似,只不过是将十六进制一位与二进制四位相转换。
      (1)二进制转十六进制
      取四合一法,即从二进制的分界点(小数点),向左(向右)每四位取成一位,将这四位二进制按权相加,得到的数就是一位十六进制数,然后,按顺序进行排列,小数点的位置不变,得到的数即是十六进制数。如果无法凑足四位,则补0,凑足四位。
      如将二进制数101011.101转换为十六进制,转换方式,如图所示。
      在上图,先从小数点开始每四位取成一位,不足补0,将四位二进制按权相加,所得数按顺序读取值为2B.A,即是二进制101011.101的十六进制值。
      (2)十六进制转二进制
      取一分四法,即将一位十六进制数分解成四位二进制数,用四位二进制按权相加去凑这位十六进制数,小数点位置照旧。
      如将十六进制数6E.2转换为二进制,转换方式,如图所示。
      二进制与八进制转换过程中的数值的对应关系,如表所示。
      四、八进制与十六进制的转换
      不能直接转换,先将八进制(或十六进制)转换为二进制,然后再将二进制转换为十六进制(或八进制),小数点位置不变。
      五、八进制、十六进制与十进制的转换
      (1)间接法,先将进制数转换为二进制,然后再将二进制转换为目标进制。
      (2)直接法,和二进制与十进制的转换类似。
    l*** | 2018-08-16 15:55:29 0 0 评论
    0/300
  • 2018-08-16 16:29:29
  •  public static void main(String[] args) {
      System.out.println(TenTrans());
     }
    
     public static String TenTrans() {
      System.out.println("请输入你想转到到的进制(输入2,8,16)");
      Scanner sc = new Scanner(System.in);...

    查看全部>>

     public static void main(String[] args) {
      System.out.println(TenTrans());
     }
    
     public static String TenTrans() {
      System.out.println("请输入你想转到到的进制(输入2,8,16)");
      Scanner sc = new Scanner(System.in);
      int m = sc.nextInt();
      int hex = 0, offset = 0;
      switch (m) {
      case 2:
       hex = 1;
       offset = 1;
       break;
      case 8:
       hex = 7;
       offset = 3;
       break;
      case 16:
       hex = 15;
       offset = 4;
       break;
      }
      return TenTransform(hex, offset);
     }
     /*
      * 10进制转换16,8,2进制的简单方法 1:16进制每次&15取最低四位 右移四位/8进制&7 右移3位 /2进制&1 右移1
      */
    
     public static String TenTransform(int hex, int offset) {
      System.out.println("请输入你需要转换的10进制数(不要有空格)");
      Scanner sc = new Scanner(System.in);
      int x = sc.nextInt();
      sc.close();
      int k = 0;
      char[] arr = new char[32];
      for (int i = 0; i >>= offset;
      }
      // 标记出非零起点
      int key = 0;
      for (int i = 0; i < arr.length; i++) {
       if (arr[i] != '0') {
        key = i;
        break;// 找到第一个以后就中断循环退出
       }
      }
      // 创建一个新的数组,长度为非零位置到结尾
      char[] result = new char[arr.length - key];// key位置的长度是key+1
      for (int i = 0; i < result.length; i++) {
       result[i] = arr[key + i];
      }
      // 不能返回Int类型的结果 ,因为16进制有字母
      return new String(result);
     }
    幸*** | 2018-08-16 16:29:29 0 0 评论
    0/300

类似问题

换一换
  • JAVA相关相关知识

  • 电脑网络技
  • 电脑网络
最新资料 推荐信息 热门专题 热点推荐
热点检索
确定举报此问题
举报原因(必选):
报告,这不是个问题
报告原因(必选):
返回
顶部