进制转化的问题,体现了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]);
}
}
} |