public static void trans(int num,int base, int offset)//创建一个trans的函数,有3个未知变量,分别是转换的num,取对应进制位进行&操作的base,无符号右移的位数offset.
{
if(num==0);
{
System.out.println(0);
return ;
}//先对传的数进行判断,如果是0,就直接打印0,不再进行转换操作;
char[] chs={'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;//定义一个指针,让arr[pos]对应的就是容器中最后一位;目的是为了遍历时候打印顺序是正的.
while(num!=0)//当num右移offset位后,如果num==0了,就代表这个数的进制转换有效位已经全部找出来了
{
int temp=num&base;//与判断,取分别与1,7,15与操作;
arr[--pos]=chs[temp];//先让指针-1,即arr.legnth就是最后一位的角标,存进去
num=num>>>offset;//右移目的取前一位有效位
}
for(int x=pos;x<arr.length;x++)//进行遍历,打印出这个arr[]这个数组里的从arr[pos]开始的后几位.
{
System.out.print(arr[x]);
}
} |