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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

         昨天晚上刚听完毕老师的视频,讲到移位运算符的时候,有讲到一个把十进制转换成十六进制的案例。然后我自己写了一个把十进制转换成八进制的代码。
  1. //例子:把一个数字转换成8进制
  2.                 int x=50;
  3.                 int x1=x&7;//先获取右边第一个数
  4.                 int x2=(x>>>3)&7;//在获取右边第二个数
  5.                 System.out.println(x2+""+x1);       
复制代码

       后来我想到一个问题,就是毕老师和我的数都比较小,那如果这个数字是1000甚至是10000的情况下,我怎么判断需要移位几次啦?

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

2 个回复

倒序浏览
移位当然是移到没数可移为止了,即左边全是0了。
根据要求写了个代码,其实不管是求8进制还是16进制等,原理都一样,
当然还可以用查表法。这里我没用,只写了8进制的,代码如下:
  1. /*
  2. 需求:十进制转换成八进制的代码。

  3. 思路:
  4. 1,与7
  5. 2,将与7后得到的数,用数组倒序存储下来
  6. 3,移位
  7. 4,正向打印数组
  8. */

  9. class Test
  10. {
  11.         public static void main(String[] args)
  12.         {
  13.                 toBa(1000);
  14.         }
  15.         public static void toBa(int in)
  16.         {
  17.                 /*
  18.                 定义一个数组,长度为11(应该能存下了,
  19.                 因为一个整数默认int类型,32位,八进制每3位代表一位)
  20.                 */
  21.                 int [] i = new int[11];
  22.                 int pos=i.length;//定义指针,从i.length-1即最后一个角标开始存储
  23.                 while (in!=0)//直到移位成0的时候停止循环
  24.                 {
  25.                         i[--pos] = in&7;
  26.                         in = in>>>3;
  27.                 }
  28.                 for (int x=pos; x<i.length; x++)
  29.                 {
  30.                         System.out.print(i[x]);
  31.                 }
  32.         }
  33. }

  34. /*

  35. 0000 0000 0001 1001

  36. 0000 0000 0000 0111
  37. */
复制代码

评分

参与人数 2技术分 +2 收起 理由
李小然 + 1
天涯追梦 + 1 很给力!

查看全部评分

回复 使用道具 举报
想飞的鱼 发表于 2014-6-15 08:17
移位当然是移到没数可移为止了,即左边全是0了。
根据要求写了个代码,其实不管是求8进制还是16进制等,原 ...

谢谢前辈!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马