A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨立考 中级黑马   /  2012-10-3 10:22  /  2398 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看视频中的查表法我看了三遍都没看懂{:soso_e127:},谁能给我举个查表法的例子。

6 个回复

倒序浏览
class  Demo
{
        public static void toChange(int n){
                char[] biao={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
                char[] arr=new char[32];
                int index=0;
                while(n!=0){                       
                        int code=n&15;  
                        arr[index++]=biao[code];
                        n=n>>>4;

                }                                
                printArray(arr,index);
        }               
        public static void printArray(char[] ch,int index){
               
                for(int i=index-1;i>=0;i--){
                        
                        System.out.print(ch);
            
   }
                System.out.println();
        }

        public static void main(String[] args)
        {
                int n=170;
                toChange(n);        
        }
}
例如上面这个把二进制数170转化为16进制的
红色部分先创建一个数组,然后根据需要去数组里取需要的元素,这就是查表法,然后把取出的元素组成一个新的数组,打印新数组的元素就得到了转化后的十六进制的数
回复 使用道具 举报
  1. package cn.itcast.heima.technology;

  2. import java.util.Scanner;

  3. public class CheckDemo {

  4.        
  5.         public static void main(String[] args) {
  6.                 /*
  7.                  * 将输入的数据用二进制形式表示
  8.                 */
  9.                 Scanner sc=new Scanner(System.in);
  10.                 int num=sc.nextInt();
  11.                 print(num);
  12.         }
  13.        
  14.         public static void print(int i){
  15.                 char[] chs={'0','1'};//定义char数组,元素对应二进制的0和1
  16.                 //定义容器,接收数据
  17.                 StringBuilder sb=new StringBuilder();
  18.                
  19.                 while(i!=0){
  20.                         int n=i&1;
  21.                         sb.append(chs[n]);
  22.                         i=i>>>1;
  23.                 }
  24.                 System.out.println(sb.reverse().toString());
  25.         }

  26. }
复制代码
回复 使用道具 举报
本帖最后由 叶征东 于 2012-10-3 14:23 编辑

public static void toHexByLookupMethod(int num){//------假如num=60
           char[] chs = {'0','1','2','3',
                               '4','5','6','7',
                               '8','9','A','B',
                               'C','D','E','F',};
          char[] arr = new char[8];//----arr.length=8.
          int pos = arr.length;                  (1)pos=8;  
          while(num!=0){                        (2)60!=0,true                   (6)3!=0,true,                    (10)num=0,false,不再执行while里面的语句,而执行后面的for语句.
                    int temp = num & 15;     (3)temp= 60 & 15 =12       (7)temp= 3 & 15 =3
                    arr[--pos] = chs[temp];   (4)arr[7]=chs[12]='C'        (8)arr[6]= chs[3]=3
                    num = num >>> 4;       (5)num=60>>>4=3           (9)num=3>>>4=0
          }
          for(int x=pos; x<arr.length; x++){    (11)for(int x=6; x<8; x++),注意,pos在第8步时已经变为6了,   arr.length=8
                 System.out.print(arr[x]);
           }
}

上面是这段代码的执行步骤,
我觉得还是多看几遍视频,理解思路比较重要,多看几遍就懂了
回复 使用道具 举报

回复 使用道具 举报
娇赛赛 发表于 2012-10-3 15:08

女生果然有耐心,佩服
回复 使用道具 举报
黄小贝 发表于 2012-10-3 15:10
女生果然有耐心,佩服

男生比较聪明,那女生要是没点耐心,那我们怎么和你们男生比呢。。呵呵。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马