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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HM周一帆 中级黑马   /  2013-3-28 20:57  /  1475 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 HM周一帆 于 2013-3-29 08:26 编辑

public static void ten2Hex(int num){
while(num !=0){
                 int temp = num &15;
               
                 if(temp>9){
                      System.out.println((char)(temp-10+'A'));
                      }else
                            System.out.println(temp);
                           num = num>>>4;
                 }
}
                        int temp  = num&15;这一行是干什么呢?

点评

如果问题未解决,请继续追问,如果问题解决了,请将帖子分类改为已解决,谢谢  发表于 2013-3-29 07:11

4 个回复

正序浏览
  int temp  = num&15;//这一句的意思是将该十进制的数转成二进制后,取其最后四位


例如:把60转成十六进制(看过基础视频的都知道)

60的二进制:
    111100

我们不用程序实现的方法是:4位一组,转换成十六进制
   11  1100
-------------------
    3       C    所以,60转换成十六进制数是3C


用代码实现过程,将60的二进制数111100其与上15
  111100
&001111
---------------
  001100   这个二进制数的十六进制是C
然后111100向右移4位,得到000011,再和15相与
  000011
&001111
-------------
  000011  这个二进制数的十六进制是3

最后反向打印,得到3C
回复 使用道具 举报
int temp  = num&15;这一行是干什么呢?

这是二进制转十六进制时采用的,& 是与运算符,15的二进制是 0000-0000 0000-0000 0000-0000 0000-1111。任何数与上15,目的就是取后四位。

比如:6&15
    0000-0000 0000-0000 0000-0000 0000-0110
  &0000-0000 0000-0000 0000-0000 0000-1111
------------------------------------------------------------------------------
    0000-0000 0000-0000 0000-0000 0000-0110 =6

然后每次  num = num>>>4; 就会把十六进制数倒序输出来、。

评分

参与人数 1技术分 +1 收起 理由
洪建超 + 1

查看全部评分

回复 使用道具 举报
&作为与运算符的话 就是两个操作数的二进制进行与操作,0就是false,1就是true
例如;6&3=2
过程;110
        &011
------------
          010      =2


&
true&true=true;
true&false=false;
false&true=false;      只要两边的boolean表达式结果,有一个为false,结果为false。只有两边都为true,结果才为true
false&false=false;

评分

参与人数 1技术分 +1 收起 理由
洪建超 + 1

查看全部评分

回复 使用道具 举报
int temp = num&15 ;这是与运算,就是告诉你temp最大为15...
与运算知道吧??
举个例子
比如2&15 结果是2;
但是 127&15就是15了。
    11111111000000
& 00000000001111
-----------------------------
    00000000000000
这个就是与运算,希望对你有帮助

评分

参与人数 1技术分 +1 收起 理由
洪建超 + 1

查看全部评分

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