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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

5黑马币
本帖最后由 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]);
            }
    }

最佳答案

查看完整内容

这个是毕老师讲的,、此处是进行进制转换,转为16进制,计算机中4位2进制代表一位16进制数,由于做&运算后,该为如果为16要进位,所以int tem=key & 15; 15的二进制1111,运算后得出一位,所以连续&15,就key=key>>>4;取到下一个16进制的位数

5 个回复

倒序浏览
本帖最后由 邓士林 于 2015-1-1 19:13 编辑

这个是毕老师讲的,、此处是进行进制转换,转为16进制,计算机中4位2进制代表一位16进制数,由于做&运算后,该为如果为16要进位,所以int tem=key & 15;  15的二进制1111,运算后得出一位,所以连续&15,就key=key>>>4;取到下一个16进制的位数

点评

讲的还算可以,但是还是不够透彻。不过你已经很好啦  发表于 2015-1-2 22:07
回复 使用道具 举报
小平 来自手机 中级黑马 2015-1-1 17:36:56
藤椅
什么问题
回复 使用道具 举报
此程序是将二进制转为16进制,四个二进制位代表一个16进制位int tem=key&15是将二进制取最后四位,再次取时就需要向右移4位。
回复 使用道具 举报
好,顶起,大赞
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马