你不要把所有代码都被背上,你只要记住,主要的代码就是三句话。其他的顺藤摸瓜,就能想起来了,再简单的讲,一问你进制转换,你就要想到 "3" 。
////////////////////重要的就是三步////////////////////////
int temp = num & base ;//&的目的是为了获得最低几位的 1
sb.append(chs[temp]);
num = num >>> offSet;
//////////////////////////////////////////////////
不知道你现在掌握的是哪一种版本的转换代码的写法,我这里给出的是最终版的最简洁的版本。
- 进制转换练习
- 十进制-转16进制(其实是二进制--->16进制,因为用的是位运算,10进制转成二进制后,再运算的)就是获取32位中的每4位。首先看最低4位,其实就是拿4位里的有效位1,用这个数&1111,就得到最低4位了。再右移4位
- 10--->8 右移3位。
- 静态方法:Integer.toBinaryString(int a)把整数转成二进制
- public static void main(String[] args)
- {
- toHex(60);
- toOctal(8);
- toBinary(6);
- }
- private static void toHex(int num) {
- trans(num,15,4);
- }
- private static void toOctal(int num) {
- trans(num,7,3);
- }
- private static void toBinary(int num) {
- trans(num,1,1);
- /*二进制还可以这么写
- StringBuffer sb = new StringBuffer();
- while(num!=0)
- {
- sb.append(num % 2);
- num = num /2;
- }
- System.out.println(sb.reverse());
- */
- }
- private static void trans(int num ,int base ,int offSet) {
- StringBuffer sb = new StringBuffer();
- int numberSystem = num ;
- //查表法
- char [] chs = {'0','1','2','3',
- '4','5','6','7',
- '8','9','A','B',
- 'C','D','E','F'};
- //转成二进制
- while(num!=0)
- {
- ////////////////////重要的就是三步////////////////////////
- int temp = num & base ;//&的目的是为了获得最低几位的 1
- sb.append(chs[temp]);
- num = num >>> offSet;
- //////////////////////////////////////////////////
- }
- System.out.println(numberSystem+"转成"+(base+1)+"进制:"+sb.reverse());
- }
复制代码
|