zoukankan      html  css  js  c++  java
  • Java 语言基础之数组应用

    1. 什么时候使用数组呢?
      如果数据出现了对应关系, 而且对应关系的一方是有序的数字编号, 并作为角标使用.
      这时,就必须要想到数组的使用. 也就是将这些数据存储到数组中, 根据运算的结果作为角标,
      直接去查数组中对应的元素即可.

    这种方式称为 查表法 .

    需求: 获取一个整数的十六进制表现形式
    
    public static void toHex(int num)
    {
        // 健壮性判断
        if(num==0)
        {
            System.out.print("0");
            return; //函数执行结束
        }
        // 定义一个对应关系表
        char[] chs = {'0','1','2','3',
                      '4','5','6','7',
                      '8','9','A','B',
                      'C','D','E','F'
                  };
        /*
        一会查表会查到比较多的数据,数据一多, 就先存储起来, 在进行操作.
        所以定义一个数组, 当作临时容器.
        而 int 类型, 四个字节,占32个二进制位, 四个二进制位代表一个十六进制位,
        所以临时容器长度为 8
        */
        char[] arr = new char[8];
        int pos = 0;
    
        while(num!=0)
        {
            int temp = num&15;
            arr[pos++] = chs[temp];
            num = num >>> 4;   // 使用无符号右移
        }
    
        // 将结果打印
        System.out.println("pos="+pos);
        for(int x = pos-1; x>=0; x--)
        {
            System.out.print(arr[x]);    
        }
    }
    
    代码改进为任意进制:
    // 十进制 --> 十六进制
    public static void toHex(int num)
    {
        trans(num, 15, 4);
    }
    
    // 十进制 --> 二进制
    public static void toBinary(int num)
    {
        trans(num, 1, 1);
    }
    
    // 十进制 --> 八进制
    public static void toOctal(int num)
    {
        trans(num, 7, 3);
    }
    
    public static void trans(int num, int base, int offset)
    {
        if(num == 0)
        {
            System.out.println("0");
            return;
        }
        char[] chs = {
                       '0','1','2','3','4','5',
                       '6','7','8','9','A','B',
                       'C','D','E'
                   };
        char[] arr = new char[32]; // 二进制最长
        int pos = 0;
    
        while(num != 0)
        {
            int temp = num & base; // 二进制与 1,八进制与 7,
            arr[post++] = chs[temp];
            num = num >>> offset; // 二进制右移 1 位, 八进制右移 3 位
        }
    
        // 输出结果
        for(int x = pos - 1; x>=0; x--)
        {
            System.out.print(arr[x]);
        }
        System.out.println(); // 输出完成后,换行
    
    }
    

    参考资料:

  • 相关阅读:
    《u-boot.lds分析》
    《uboot源码解析(二)启动第二阶段分析》
    《uboot源码解析(一)启动第一阶段——start.s分析》
    《uboot的目录结构说明》
    《uboot环境变量:详谈bootcmd 和bootargs》
    关于关注和取消关注的nodejs写法
    jquery去除字符串首尾空格的方法:$.trim()
    javascript数组去重算法-----3
    javascript数组去重算法-----2
    javascript数组去重算法-----1
  • 原文地址:https://www.cnblogs.com/linkworld/p/7422468.html
Copyright © 2011-2022 走看看