黑马程序员技术交流社区

标题: 进制转化问题 [打印本页]

作者: 刘郑瑞    时间: 2013-1-17 00:23
标题: 进制转化问题
进制转化的问题,体现了java不仅追求简单还追求效率。
package com.heima.source;
public class Change {
        public static void main(String[] args) {
                c2(10);
                c16(12);
                c166(12);
        }
        //二进制转化;利用StringBuffer容器。
        public static void c2(int num) {
                StringBuffer sb = new StringBuffer();
                while (num > 0) {
                        sb.append(num % 2);
                        num = num / 2;
                }
                System.out.println(sb.reverse());
        }
        //十六进制方法一:利用StringBuffer容器。
        public static void c16(int num) {
                StringBuffer sb = new StringBuffer();
                for (int i = 0; i < 8; i++) {
                        //王牌操作&:输入数与15的与位操作,转化成十六进制
                        int temp = num & 15;
                        if(temp > 9){
                                //强转成char类型
                                sb.append((char)(temp-10 + 'A'));
                        }else
                        sb.append(temp);
                        //位运算,效率相当之高
                        num = num >>> 4;
                }
                System.out.println(sb.reverse());
        }
        //十六进制方法二:利用数组容器。
        public static void c166(int num){
                char [] str = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
                char [] temp = new char[8];
                //定义追踪变量
                int pro = temp.length - 1;
                while(num!=0){
                int result = num & 15;
                //反向存放
                temp[pro--]= str[result];
                num = num>>>4;
                }
                //正向读取
                for(int i = pro+1;i<temp.length;i++){
                        System.out.print(temp[i]);
                }
        }
}
作者: 许庭洲    时间: 2013-1-19 19:57
值得学习ing!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2