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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭冰川 中级黑马   /  2013-1-4 20:42  /  1210 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郭冰川 于 2013-1-4 22:25 编辑

下面是毕老师讲的例子,将二进制中的每四位提取出来用十六进制表示,例子中只提了两个十六进制的值,能不能用一个循环让二进制数继续右移直到全部提取出来,求高手解答.
class OperateDemo
                {
                        static int num = 700;
                        public static void main(String[] args)
                        {
                                
                                int n1 = num & 15;
                                if (n1>9)
                                        System.out.println((char)(n1-10+'A'));
                                else
                                        System.out.println(n1);
                                int temp = num >>> 4;
                                int n2 = temp & 15;
                                if (n2>9)
                                        System.out.println((char)(n2-10+'A'));
                                else
                                        System.out.println(n2);

                        }
                }

评分

参与人数 1技术分 +1 收起 理由
高境 + 1 鼓励一个!

查看全部评分

4 个回复

倒序浏览
李培根 来自手机 金牌黑马 2013-1-4 21:01:29
沙发
可以定义循环,当num不等于0的时候就继续。

评分

参与人数 1黑马币 +30 收起 理由
高境 + 30 赞一个!

查看全部评分

回复 使用道具 举报
这是我对上面代码改写了一下 在java中 int类型为4个字节32位 而每4位表示一个十六进制的话 只需移动8次 可以在使用for循环 在执行语句中进行判断左移4位之后是否为0  为0就跳出循环
以下是我写的代码 其实毕老师在后面有讲到过更简便的方法
public class Demo1 {
            static int num = 700;
            public static void main(String[] args)
            {
                    
                    for(int i = 0;i<8;i++){
                            int n = num & 15;
                            if(n == 0)
                                    break;
                            else{
                                    if(n>9)
                                             System.out.println((char)(n-10+'A'));
                                    else
                                             System.out.println(n);
                            }
                            num = num >>> 4;
                    }
                    
    }
}
回复 使用道具 举报
蔡少凯 发表于 2013-1-4 22:03
这是我对上面代码改写了一下 在java中 int类型为4个字节32位 而每4位表示一个十六进制的话 只需移动8次 可 ...

ok了,多谢
回复 使用道具 举报
李培根 发表于 2013-1-4 21:01
可以定义循环,当num不等于0的时候就继续。

谢啦,新版主
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马