黑马程序员技术交流社区

标题: 学习JAVA时遇到的问题。希望有人能精准的点出问题所在 [打印本页]

作者: xc29417412    时间: 2015-1-1 16:43
标题: 学习JAVA时遇到的问题。希望有人能精准的点出问题所在
本帖最后由 xc29417412 于 2015-1-1 17:22 编辑


  /*
问题来了,为什么key=key>>>4,为什么是右移4位呢,为什么不是 3位,请大神点出来 啊
*/

class Kobe
{
    public static void tobin(int key)
    {
            char[] ch={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
            char[] arr=new char[8];    //定义一个临时贮存
            int pos=0;
   while(key!=0        )
            {
                    int tem=key & 15;
               
                    key=key>>>4;
                    arr[pos++]=ch[tem];
            }
            for(int a=pos;a>=0;a--)
            {
                    System.out.print(arr[a]);
            }
    }


作者: 邓士林    时间: 2015-1-1 16:43
本帖最后由 邓士林 于 2015-1-1 19:13 编辑

这个是毕老师讲的,、此处是进行进制转换,转为16进制,计算机中4位2进制代表一位16进制数,由于做&运算后,该为如果为16要进位,所以int tem=key & 15;  15的二进制1111,运算后得出一位,所以连续&15,就key=key>>>4;取到下一个16进制的位数
作者: 小平    时间: 2015-1-1 17:36
什么问题
作者: bin393973282    时间: 2015-1-1 18:06
此程序是将二进制转为16进制,四个二进制位代表一个16进制位int tem=key&15是将二进制取最后四位,再次取时就需要向右移4位。
作者: 以利亚    时间: 2015-1-4 20:49
好,顶起,大赞




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2