黑马程序员技术交流社区
标题:
想请教各位前辈,在把十进制转成八进制的过程中,我如何判断需要进行几次移位?
[打印本页]
作者:
奋斗2014
时间:
2014-6-13 00:09
标题:
想请教各位前辈,在把十进制转成八进制的过程中,我如何判断需要进行几次移位?
昨天晚上刚听完毕老师的视频,讲到移位运算符的时候,有讲到一个把十进制转换成十六进制的案例。然后我自己写了一个把十进制转换成八进制的代码。
//例子:把一个数字转换成8进制
int x=50;
int x1=x&7;//先获取右边第一个数
int x2=(x>>>3)&7;//在获取右边第二个数
System.out.println(x2+""+x1);
复制代码
后来我想到一个问题,就是毕老师和我的数都比较小,那如果这个数字是1000甚至是10000的情况下,我怎么判断需要移位几次啦?
作者:
想飞的鱼
时间:
2014-6-15 08:17
移位当然是移到没数可移为止了,即左边全是0了。
根据要求写了个代码,其实不管是求8进制还是16进制等,原理都一样,
当然还可以用查表法。这里我没用,只写了8进制的,代码如下:
/*
需求:十进制转换成八进制的代码。
思路:
1,与7
2,将与7后得到的数,用数组倒序存储下来
3,移位
4,正向打印数组
*/
class Test
{
public static void main(String[] args)
{
toBa(1000);
}
public static void toBa(int in)
{
/*
定义一个数组,长度为11(应该能存下了,
因为一个整数默认int类型,32位,八进制每3位代表一位)
*/
int [] i = new int[11];
int pos=i.length;//定义指针,从i.length-1即最后一个角标开始存储
while (in!=0)//直到移位成0的时候停止循环
{
i[--pos] = in&7;
in = in>>>3;
}
for (int x=pos; x<i.length; x++)
{
System.out.print(i[x]);
}
}
}
/*
0000 0000 0001 1001
0000 0000 0000 0111
*/
复制代码
作者:
奋斗2014
时间:
2014-6-15 08:34
想飞的鱼 发表于 2014-6-15 08:17
移位当然是移到没数可移为止了,即左边全是0了。
根据要求写了个代码,其实不管是求8进制还是16进制等,原 ...
谢谢前辈!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2