《黑马程序员》 进制转换优化

时间:2023-02-19 13:24:02
------- android培训java培训、期待与您交流! ----------
public class TransDemo {
/**
* 十进制--二进制
* max:1
* 二进制不是0就是1
* offer:>>>1
* 十进制--八进制
* max:111==7
* offer:>>>3
* 十进制--十六进制进制
* max:1111==15
* offer:>>>4
*/
public static void main(String[] args) {
//int num=-12;
//toBinary(num);
toBa(60);
}

//十进制--->>二进制
public static void toBin(int number){
trans(number, 1, 1);
}

//十进制--->>八进制
public static void toBa(int number){
trans(number, 7, 3);
}

//十进制--->>十六进制
public static void toHex(int number){
trans(number, 15, 4);
}

//需要参数数字,和什么数&,右移多少位
public static void trans(int number,int base,int offer){
//原始表
char[] oChars={
'0','1','2','3',
'4','5','6','7',
'8','9','A','B',
'C','D','E','F'
};
//存储转换之后的数据的表,是一个临时表
//我们反着存数据
//因为int类型最大32位。也够用了
char[] nChars=new char[32];

//定义指针控制存储数据的位置
int pos=nChars.length;

while(number!=0){
int temp=number&base;
//使用&之后的结果做为索引去上面的表中进行查表
//在存入数据之前,将角标-1我们是反向存数据
nChars[--pos]=oChars[temp];
number=number>>>offer;
}

for (int i = pos; i < nChars.length; i++) {
System.out.print(nChars[i]+",");
}
}
}