查表法 进行进制数转换
这样发帖 会不会被当成灌水啊??: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);
- }
- }
复制代码
|
|