A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 灬王一鹏 中级黑马   /  2015-9-5 22:11  /  1491 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

进制这一块看了好几遍了,每次当时懂了,过一段时间就忘了.
求大神教教这一块应该用什么姿势学?

16 个回复

倒序浏览
  多练习吧 ,还有就是搞清楚原理
回复 使用道具 举报
你不要把所有代码都被背上,你只要记住,主要的代码就是三句话。其他的顺藤摸瓜,就能想起来了,再简单的讲,一问你进制转换,你就要想到 "3" 。

////////////////////重要的就是三步////////////////////////                       
                        int temp = num & base ;//&的目的是为了获得最低几位的 1
                        sb.append(chs[temp]);
                        num = num >>> offSet;
//////////////////////////////////////////////////       

不知道你现在掌握的是哪一种版本的转换代码的写法,我这里给出的是最终版的最简洁的版本。
  1. 进制转换练习
  2. 十进制-转16进制(其实是二进制--->16进制,因为用的是位运算,10进制转成二进制后,再运算的)就是获取32位中的每4位。首先看最低4位,其实就是拿4位里的有效位1,用这个数&1111,就得到最低4位了。再右移4位
  3. 10--->8 右移3位。
  4. 静态方法:Integer.toBinaryString(int a)把整数转成二进制

  5.         public static void main(String[] args)
  6.         {
  7.                 toHex(60);
  8.                 toOctal(8);
  9.                 toBinary(6);
  10.         }
  11.         private static void toHex(int num) {
  12.                 trans(num,15,4);
  13.         }
  14.         private static void toOctal(int num) {
  15.                 trans(num,7,3);
  16.         }
  17.         private static void toBinary(int num) {
  18.                 trans(num,1,1);

  19.                 /*二进制还可以这么写
  20.                 StringBuffer sb = new StringBuffer();
  21.                 while(num!=0)
  22.                 {
  23.                         sb.append(num % 2);
  24.                         num = num /2;
  25.                 }
  26.                 System.out.println(sb.reverse());
  27.                 */       
  28.       }
  29.         private static void trans(int num ,int base ,int offSet) {

  30.                 StringBuffer sb = new StringBuffer();
  31.                 int numberSystem = num ;
  32.                 //查表法
  33.                 char [] chs = {'0','1','2','3',
  34.                                            '4','5','6','7',
  35.                                            '8','9','A','B',
  36.                                            'C','D','E','F'};
  37.                 //转成二进制
  38.                 while(num!=0)
  39.                 {
  40.         ////////////////////重要的就是三步////////////////////////                       
  41.                         int temp = num & base ;//&的目的是为了获得最低几位的 1
  42.                         sb.append(chs[temp]);
  43.                         num = num >>> offSet;
  44. //////////////////////////////////////////////////                       
  45.                 }
  46.                 System.out.println(numberSystem+"转成"+(base+1)+"进制:"+sb.reverse());
  47.         }
复制代码

回复 使用道具 举报 1 0
asinzuo 发表于 2015-9-5 22:47
你不要把所有代码都被背上,你只要记住,主要的代码就是三句话。其他的顺藤摸瓜,就能想起来了,再简单的讲 ...

谢谢 学长   拿走了 真心感谢!
回复 使用道具 举报
这个理解就好了吧,老师说了, 不用太操心这个,后期不咋用的。
回复 使用道具 举报
用王者的姿势.
回复 使用道具 举报
一样对进制头疼,感觉还是理解为上.
回复 使用道具 举报
多看,多联系就好了
回复 使用道具 举报
Rzzz 中级黑马 2015-9-5 23:03:04
9#
前面层主那个三步get 有用呀..
回复 使用道具 举报
韩春兴 来自手机 中级黑马 2015-9-5 23:05:35
10#
额(⊙o⊙)…(⊙o⊙)…(⊙o⊙)…
回复 使用道具 举报
理解透了,就记住了
回复 使用道具 举报
这些东西本来就容易忘记,理解就好了,以后用多了自然就记得了!
回复 使用道具 举报
asinzuo 发表于 2015-9-5 22:47
你不要把所有代码都被背上,你只要记住,主要的代码就是三句话。其他的顺藤摸瓜,就能想起来了,再简单的讲 ...

每一句基本都理解,就是让我写````逻辑顺序就会乱!也就是跟不会写一样`````也正试图记住它好难```

只知道转16进制&15  右移4位
        转8进制&7   右移三位
     转2进制%1   右移一位

int offste的作用是什么?谁给它赋值??
回复 使用道具 举报
多练就好
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马