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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 灬王一鹏 中级黑马   /  2015-9-5 22:11  /  1278 人查看  /  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
你不要把所有代码都被背上,你只要记住,主要的代码就是三句话。其他的顺藤摸瓜,就能想起来了,再简单的讲 ...

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

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

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

int offste的作用是什么?谁给它赋值??

点评

这是三个转换合在了一起,你把他们再拆分成3份。offset,是位移的位数。老师讲到这里了吗?把老师讲的视频多看几遍,看看老师画的图  发表于 2015-9-6 06:31
回复 使用道具 举报
多练就好
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马