1 1,使用数组2 /*
3 进制转换 使用数组4
5 定义一个功能,打印一个十进制数转对应16进制表现形式6 */
7
8 classArrayTest49 {10 public static voidmain(String[] args)11 {12 toHex(60);13 }14 /*
15 定义一个功能,打印一个十进制数转对应16进制表现形式16
17 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1518 0 1 2 3 4 5 6 7 8 9 A B C D E F19 48 49 50 51 52 53 54 55 56 57 65 66 67 68 69 7020
21
22
23
24 什么时候使用数组?25 当同一类型的元素较多时,就是用数组这个容器对数据进行存储26
27 */
28 public static void toHex(intnum)29 {30 //定义一个char类型的数组,用于存储每次获取到的十六进制值
31 char[] chs=new char[8];32 int pos =chs.length;33 while(num!=0)34 {35 pos--;36 int temp =num & 15;37 if (temp>9)38 {39 chs[pos]=(char)(temp-10+'A');40 }41 else
42 chs[pos]=(char)(temp-0+'0');43 num = num >>> 4;44 }45 System.out.println("pos="+pos);46 //打印数组内容
47 for (int x=pos;x
51 }52 }53 }54
55
56
57
58 2,查表法59 /*
60 进制转换 查表法61
62 定义一个功能,打印一个十进制数转对应16进制表现形式63 */
64
65 classArrayTest566 {67 public static voidmain(String[] args)68 {69 toHex2(60);70 }71 /*
72 定义一个功能,打印一个十进制数转对应16进制表现形式73
74 10进制 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1575 16进制 0 1 2 3 4 5 6 7 8 9 A B C D E F76 num-10+'A'的动作不太容易想到77 我们可以换另一种想法78 我们发现,十六进制中一共有16个元素79 而且没通过&15获取的数字都在15之内,都有对应的十六进制元素80
81 而且元素对应的数组,正好有规律,而且符合了数组这种容器的特点---角标82
83 那么就可以将十六进制的元素都存储到数组中84 将每次&15的结果作为角标去查这个数组,就可以获取到十六进制的对应的元素;85
86 这就是传说中的查表法;87
88 什么时候使用查表法呢?89 当元素很多,而且这些元素与数字有对应关系,而且这些数字都有角标的规律90 这时,优先想到查表法。91
92 二进制表 48 49 50 51 52 53 54 55 56 57 65 66 67 68 69 7093
94
95
96
97 什么时候使用数组?98 当同一类型的元素较多时,就是用数组这个容器对数据进行存储99
100 */
101
102
103 public static void toHex2(intnum)104 {105 //定义一个十六进制的元素的表
106 char[] arr={'0','1','2','3',107 '4','5','6','7',108 '8','9','A','B',109 'C','D','E','F'};110
111 //定义一个char类型的数组,用于存储每次获取到的十六进制值
112 char[] chs=new char[8];113 int pos =chs.length;114 while(num!=0)115 {116 int temp =num & 15;117 chs[--pos]=arr[temp];118 num = num >>> 4;119 }120 System.out.println("pos="+pos);121 //打印数组内容
122 for (int x=pos;x
126 }127 }128 }129
130
131
132
133 3三种进制转换134
135 classArrayTest6136 {137 public static voidmain(String[] args)138 {139 toBin(6);140 toHex(26);141 toOctal(60);142
143 System.out.println(Integer.toBinaryString(-6));//开发写这个
144
145
146
147 }148 //十进制--->二进制
149 public static void toBin(intnum)150 {151 trans(num,1,1);152 }153
154 //十进制--->八进制
155
156 public static void toOctal(intnum)157 {158 trans(num,7,3);159 }160
161 //十进制--->十六进制
162
163 public static void toHex(intnum)164 {165 trans(num,15,4);166 }167
168 public static void trans(int num,int base,intoffset)169 {170 if (num=0)171 {172 System.out.println("0");173 }174 //定义一个十六进制的元素的表
175 char[] arr={'0','1','2','3',176 '4','5','6','7',177 '8','9','A','B',178 'C','D','E','F'};179
180 //定义一个char类型的数组,用于存储每次获取到的十六进制值
181 char[] chs=new char[32];182 int pos =chs.length;183 while(num!=0)184 {185 int temp =num &base;186 chs[--pos]=arr[temp];187 num = num >>>offset;188 }189 System.out.println("pos="+pos);190 //打印数组内容
191 for (int x=pos;x
195 }196 }197 }