利用位运算实现进制间的转换
1.实现原理
&运算:一个数&上某个数,可以屏蔽该数的某些位;
>>>运算: 可以实现去掉低位的功能;
2.实现代码
代码中未去掉前端无用的字符‘0’
class ArrayTools
{
public static void main(String[] args)
{
ArrayTools at = new ArrayTools();
char[] arrHex = at.toHex(60);
char[] arrOct = at.toOct(60);
char[] arrBin = at.toBin(60);
printArray(arrHex);
printArray(arrOct);
printArray(arrBin);
}
public char[] toBin(int num)
{
return trans(num,1,1);
}
public char[] toOct(int num)
{
return trans(num,7,3);
}
public char[] toHex(int num)
{
return trans(num,15,4);
}
/*
num: 要转换的数
base: 与的数值 (2^n-1)
offset: 移位数
*/
private char[] trans(int num, int base, int offset)
{
if( num == 0)
{
return new char[]{'0'};
}
char[] charTable =
{
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F'
};
char[] arr = new char[32];
int pos = arr.length-1;
while(num != 0)
{
arr[pos--] = charTable[num & base];
num = num >>> offset;
}
return arr;
}
public static void printArray(char[] arr)
{
for(int x = 0; x < arr.length; x++)
{
System.out.println("arr[" + x + "] = [" + arr[x] + "]");
}
System.out.println("------------华丽的分割线-------------");
}
}
3.代码中与的数字的由来