黑马程序员技术交流社区
标题:
day4 十进制数转换成其他进制代码 查表法
[打印本页]
作者:
fmi110
时间:
2015-6-28 11:12
标题:
day4 十进制数转换成其他进制代码 查表法
查表法 进行进制数转换
这样发帖 会不会被当成灌水啊??:funk:
/*需求:
整形数字的进制转换
1、十进制 to 二进制 toBin(int num)
2、十进制 to 八进制 toOct(int num)
3、十进制 to 十六进制 toHex(int num)
三个转换函数均调用 trans(int num,int base,int offset)实现进制的转换
*/
class NumTrans
{
//类单独执行需要的主函数
public static void main(String[] args)
{
int num = -1 ;
System.out.print(num + " 转换为二进制:");
toBin(num);
System.out.print(num + " 转换为八进制:");
toOct(num);
System.out.print(num + " 转换为十六进制:");
toHex(num);
}
/*转换部分,base 取 1 7 15 分别对应 二 八 十六进制
offset 为右移量*/
public static void trans(int num,int base,int offset)
{
char[] chs = {'0','1','2','3',
'4','5','6','7',
'8','9','A','B',
'C','D','E','F'}; //表格查询法实现
char[] arr = new char[32]; //存储数字 int 型 32位
int point = arr.length; //指向转换后数组的最后一位
while(0 != num)
{
/*提取位数进行查表转换,num==0 说明转换结束*/
int temp = num & base ;
arr[--point] = chs[temp];
num = num >>> offset;
}
System.out.print("\t");
for(int i = 0 ; i<arr.length ;i++)
{
System.out.print(arr[i]);
}
System.out.println();
}
/*十 ---> 二*/
public static void toBin(int num)
{
trans(num,1,1);
}
/*十 ---> 八*/
public static void toOct(int num)
{
trans(num,7,3);
}
/*十 ---> 十六*/
public static void toHex(int num)
{
trans(num,15,4);
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2